将10进制数据转换成为其他进制数据: 明白对数据的基本操作就很容易了。假设10进制数据x转换成d进制的表示,以字符串的方式进行表示。只要按照d进制数据的方式依次取出个位、十位、百位...。存储到一个数组中,然后逆序即可。 实际上更简便的方法是使用printf() 的打印方式可以将数据按照格式中指定的顺序进行输出。
#include <iostream> /* not use global namespace */
using namespace std;
int conversion(int n, char s[], int d);
int main()
{
int n, d;
char result[32];
while (cin>>n>>d)
cout<<conversion(n, result, d)<<"\t"<<result<<"\n";
return 0;
}
/* 将10进制数据转换成为其他进制数据,目标进制由参数d进行指定 */
int conversion(int n, char s[], int d) /* at most 19 character in dst */
{
static char digits[]="0123456789ABCDEF";
char buf[20];
int j, i = 19;
buf[i] = '\0';
if(d < 2 || d > 16)
{
return 0;
}
do
{
buf[--i] = digits[n % d];
n /= d;
} while(n && i > 0);
if (n && i <= 0)
{ s[0] = '\0'; return 0; }
for(j=0; (s[j]=buf[i]) != '\0'; i++, j++);
return j;
}