给出计算十进制书359.28175的二进制,八进制,十六进制形式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* itoa(int num,char* str,int radix)
{/*索引表*/
char index[]="0123456789ABCDEF";
unsigned unum;/*中间变量*/
int i=0,j,k;
/*确定unum的值*/
if(radix==10&&num<0)/*十进制负数*/
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num;/*其他情况*/
/*转换*/
do{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='\0';
/*逆序*/
if(str[0]=='-')
k=1;/*十进制负数*/
else
k=0;
for(j=k;j<=(i-1)/2;j++)
{ char temp;
temp=str[j];
str[j]=str[i-1+k-j];
str[i-1+k-j]=temp;
}
return str;
}
int main()
{
char s[10] = {0};
printf("359 八进制: %o\n", 359);
itoa(359, s, 2);
printf("359 二进制: %s\n", s);
printf("359 十六进制: %X\n", 359);
memset(s, 0, sizeof(s));
itoa(28175, s, 2);
printf("28175 八进制: %o\n", 28175);
printf("28175 二进制: %s\n", s);
printf("28175 十六进制: %X\n", 28175);
return 0;
}