进制转换可以说是代码中常见的一种操作了,虽然在面向对象的语言中提供了相关接口,但是c中这种接口是没有的,一般得自己实现,下面简要介绍下十进制-->十六进制的转换,这个懂了其它进制的转换的都是一样的原理。
以下是代码实现:
#include <stdio.h>
void dec16hex(int num,char *hex);
int main(int argc, const char *argv[])
{
int num,ret;
char hex[16];
while(1)
{
printf("十进制(0~256):");
scanf("%d",&num);
if(num < 0)
break;
dec16hex(num,hex);
printf("十六进制:");
puts(hex);
}
return 0;
}
void dec16hex(int num,char *hex)
{
char hextable[] = "0123456789ABCDEF";
int i = 0;
int j,k;
char temhex[16],ch;
while(num)
{
hex[i++] = hextable[num%16];//对十进制数求余并最终与hextable数组中的字符匹配
num = num/16;
}
hex[i] = '\0';//给字符串从末尾加'\0'
for(j = 0,k = i-1;j < i/2;j++,k--)//将字符串反序
{
ch = hex[j];
hex[j] = hex[k];
hex[k] = ch;
}
}
通过修改,可以实现其他进制的转换。。。。