请问这道任意进制转换应该怎么做呢,希望有人能帮个忙
题目描述进制转换(二)
输入K进制的正整数N,请把N化为L进制后输出。(N<1000000;L,K<=16)
有多组数据。
输入格式:
K N L
输入
输出
样例输入
8 10 2
10 10 16
样例输出
1000
A
提示
我已经做了一段程序,不知道如何把十进制以上转成十进制。
程序代码:#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
std::string K_to_L( unsigned K, const std::string& N, unsigned L )
{
// K进制的字符串N 转化为数值value
unsigned value = 0;
for( size_t i=0; i!=N.size(); ++i )
{
if( N[i] <= '9' )
value = value*K + (N[i]-'0');
else
value = value*K + (N[i]-'A'+10);
}
// 数值value 转化为L进制的字符串str
std::string str;
for( ; value!=0; value/=L )
{
if( value%L <= 9 )
str.push_back( value%L + '0' );
else
str.push_back( value%L-10 + 'A' );
}
std::reverse( str.begin(), str.end() ); // 反序
if( str.empty() )
str.push_back( '0' );
return str;
}
int main( void )
{
unsigned K, L;
std::string N;
for( ; cin>>K>>N>>L; )
{
cout << K_to_L(K,N,L) << endl;
}
}