//////////////////////////////////////////
// 任意进制的转换
void turn(string X, int M, int N)
{
//int M = 10, N = 2;
vector<int> vec;
int len = X.length();
vector<int> data; //保存M进制下的各个位数
vector<int> output; //保存N进制下的各个位数
for (int i = 0; i<len; i++)
{
data.push_back(X[i] - '0');
}
int sum = 1;
int d = 0;
int k = 0;
while (sum) {
sum = 0;
for (int i = 0; i<len; i++)
{
d = data[i] / N;
sum += d;
if (i == len - 1)
{
output.push_back(data[i] % N);
k++;
}
else {
data[i + 1] += (data[i] % N) * M;
}
data[i] = d;
}
}
if (k == 0)
{
output.push_back(0);
k--;
}
else
{
for (int i = 0; i<k; i++)
{
vec.push_back(output[k - i - 1]);
}
}
for (int i = 0; i < vec.size(); ++i)
cout << vec[i];
cout << endl;
}
emmmm,还没看太懂。
博客展示了一段实现任意进制转换的代码。代码定义了函数 turn,通过一系列操作将 M 进制数转换为 N 进制数,包括对输入数的处理、循环计算及结果输出等,最后作者表示还没完全看懂代码。
601

被折叠的 条评论
为什么被折叠?



