如何将十进制转换为二进制、八进制、十六进制

来源:互联网 发布:java语言修饰符 编辑:程序博客网 时间:2024/04/27 18:14

三个的方法都一样,就是求余,不过最后要记得把数组反转过来。

1.十进制 –> 二进制

void DecToBin(long long dec, char* bin){    int i = 0, j = 0, k = 0, space = 0;    char a[3] = "01";    char temp[100] = " ";    do    {        temp[i++] = a[dec & 1];        if (!(++k % 4))         //每四位二进制加一个空格分开        {            temp[i++] = ' ';            space++;            k = 0;        }    } while (dec = dec >> 1);    while ((i - space) % 4)     //不够四位补0(为了美观而已)        temp[i++] = '0';    while (i--)                 //反转        bin[j++] = temp[i];}

注意:最大支持19位十进制整数
2.十进制转换为八进制

long long  DecToOct(long long dec){    int a[8] = { 0,1,2,3,4,5,6,7 };    long long oct = 0;    int temp[20] = { 0 };    int i = 0, j = 0;    do    {        temp[i++] = a[dec % 8]; //求余    } while (dec = dec >> 3);    while (j != i)        oct += powl(10, j)*temp[j++];    return oct;}

注意:最大支持18位十进制整数

3.十进制 –> 十六进制

void DecToHex(long long dec, char* hex){    char a[17] = "0123456789ABCDEF";    char temp[20] = " ";    int i = 0, j = 0;    do    {        temp[i++] = a[dec % 16];    } while (dec = dec >> 4);    while (i--)        hex[j++] = temp[i];}

注意:最大支持19位十进制整数

0 0