整型数 转换成 字符型数字或字母
char jz(int a )//a为待转换数,b为进制数
{
char b;
if(x<=9)
b=48+x;//转换成数字
if(x>=10)
b=55+x;//转换成字母
return b;
}
其中主要思想就是:反向取余法
- 通过求余数获得任意进制中每一位上所代表的数。
- 通过整除来改变进制的位数。
以下举例:
10进制整数转换为2进制数,采用除2反向取余法:
123/2=61......1
61/2=30......1
30/2=15......0
15/2=7......1
7/2=3......1
3/2=1......1
1/2=0......1
从下往上读取每一次的余数,就是转换的结果:
123=(1111011)2
-----------------------------
10进制整数转换为16进制数,采用除16反向取余法:
123/16=7......11 (用 B 表示)
7/16=0......7
从下往上读取每一次的余数,就是转换的结果:
123=(7B)16
其他进制可参照上述。
char m[6000]={'0'};
while( a != 0)
{
if(a % b <= 9)
{
m[i] = a % b + 48;
i++;
}
else
{
m[i] = a % b + 55;
i++;
}
a = a / b ;
}
注意:输出时要从后往前输出,因为数组中前部分保留的是不同进制的高位,后部分保留的是低位。
cout<< "Case " << t << ": " ;
for(j = i - 1 ; j >= 0 ; j-- )
cout << m[j] ;
if(j < 0)
cout << endl;