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

1.八进制 –> 二进制
我这里采用了一种简单又高效的办法.
先把000 - 111 的二进制用二维数组存起来.
例如:八进制25–> 5对应101 2对应010 这时候只要把八进制分解为一位一位的,然后在数组中找对应的二进制即可,无论多大的八进制数,都可以很快的分解并找到对应的二进制数.

    char a[9][5] = { "000 ","001 ","010 ","011 ","100 ","101 ","110 ","111 " };
    int temp[20] = { 0 }; //存放每一位八进制数,例如:25 --> temp[0] = 5 ,temp[1] = 2
    int iLen = 0, i = 0, j = 0;
    while (oct) //分解八进制数
    {
        temp[i++] = oct % 10;
        if (temp[i - 1] == 8 || temp[i - 1] == 9)
            return -1; //八进制数只能是0-7
        oct /= 10;
    }
    do
    {
        --i;
        //例如:temp[1] = 2 --> a[2][] = "010 ",temp[0] = 5 --> a[5][] = "101 "
        while (j < 4) //    --> bin = " 010 101" 
            bin[iLen++] = a[temp[i]][j++];
        j = 0;
    } while (i);
    return 0;
} 

注意:这个函数最大支持19位8进制数的转换
2.八进制 –> 十进制

这个也是权值相加即可.

long long OctToDec(long long oct)
{
    long long dec = 0;
    int p = 0, t = 0;
    while (oct)
    {
        t = oct % 10;
        dec += powl(8, p++)*t;
        if (t == 8 || t == 9)
            return -1;
        oct = oct / 10;
    }
    return dec;
}

注意:这个函数最大支持19位8进制数的转换

3.八进制 –> 16进制

只能通过间接转换了。

int OctToHex(long long oct, char* hex)
{
    long long dec = 0;
    char a[17] = "0123456789ABCDEF";
    char temp[30] = " ";
    int p = 0, t = 0, i = 0, j = 0;
    while (oct)               //八进制转换为十进制
    {
        t = oct % 10;
        dec += powl(8, p++)*t;
        if (t == 8 || t == 9)
            return -1;
        oct = oct / 10;
    }
    while (dec)               //十进制转换为十六进制 
    {
        temp[i++] = a[dec % 16];
        dec = dec >> 4;
    }
    while (i)
        hex[j++] = temp[--i]; //反转
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二进制八进制:使用 PHP 内置函数 decoct(),将二进制转换十进制数,再将十进制转换八进制数。例如,将二进制数 11010 转换八进制数,步骤如下: 1. 将二进制数 11010 转换十进制数,使用 bindec() 函数,得到十进制数 26。 2. 将十进制数 26 转换八进制数,使用 decoct() 函数,得到八进制数 32。 因此,二进制数 11010 转换八进制数为 32。 二进制十六进制:使用 PHP 内置函数 dechex(),将二进制转换十进制数,再将十进制转换十六进制数。例如,将二进制数 11010 转换十六进制数,步骤如下: 1. 将二进制数 11010 转换十进制数,使用 bindec() 函数,得到十进制数 26。 2. 将十进制数 26 转换十六进制数,使用 dechex() 函数,得到十六进制数 1A。 因此,二进制数 11010 转换十六进制数为 1A。 八进制二进制:使用 PHP 内置函数 decoct(),将八进制转换十进制数,再将十进制转换二进制数。例如,将八进制数 32 转换二进制数,步骤如下: 1. 将八进制数 32 转换十进制数,使用 octdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换二进制数,使用 decbin() 函数,得到二进制数 11010。 因此,八进制数 32 转换二进制数为 11010。 八进制十进制:使用 PHP 内置函数 octdec(),将八进制转换十进制数。例如,将八进制数 32 转换十进制数,直接使用 octdec() 函数,得到十进制数 26。因此,八进制数 32 转换十进制数为 26。 八进制十六进制:使用 PHP 内置函数 decoct(),将八进制转换十进制数,再将十进制转换十六进制数。例如,将八进制数 32 转换十六进制数,步骤如下: 1. 将八进制数 32 转换十进制数,使用 octdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换十六进制数,使用 dechex() 函数,得到十六进制数 1A。 因此,八进制数 32 转换十六进制数为 1A。 十六进制二进制:使用 PHP 内置函数 hexdec(),将十六进制转换十进制数,再将十进制转换二进制数。例如,将十六进制数 1A 转换二进制数,步骤如下: 1. 将十六进制数 1A 转换十进制数,使用 hexdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换二进制数,使用 decbin() 函数,得到二进制数 11010。 因此,十六进制数 1A 转换二进制数为 11010。 十六进制八进制:使用 PHP 内置函数 hexdec(),将十六进制转换十进制数,再将十进制转换八进制数。例如,将十六进制数 1A 转换八进制数,步骤如下: 1. 将十六进制数 1A 转换十进制数,使用 hexdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换八进制数,使用 decoct() 函数,得到八进制数 32。 因此,十六进制数 1A 转换八进制数为 32。 十六进制十进制:使用 PHP 内置函数 hexdec(),将十六进制转换十进制数。例如,将十六进制数 1A 转换十进制数,直接使用 hexdec() 函数,得到十进制数 26。因此,十六进制数 1A 转换十进制数为 26。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值