十进制转换二进制,八进制,十六进制

给出计算十进制书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;
}