十六进制数组解析问题

薄荷的薄荷凉 2019-01-26 11:25:14
接收显示的是五个十六进制的数组,所以自己写了个十六进制转二进制字符串的,但是需要把二进制的拆开,突然发现程序不就凉了,后面还需要把二进制再换成十进制的数。用三维的话捋不清了


num=0x3e;
char a[BUFSIZ][5] = {"0000"};
char reference[16][5]= {"0000","0001","0010","0011",
"0100","0101","0110","0111",
"1000","1001","1010","1011",
"1100","1101","1110","1111"};


while(num / 16 != 0)
{
res = num % 16;
strcpy(a[i++], reference[res]);
num = num / 16;
}

res = num % 16;
strcpy(a[i++], reference[res]);


}
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
薄荷的薄荷凉 2019-01-26
  • 打赏
  • 举报
回复
[b]
引用 1 楼 niiiloc 的回复:
不建议用多维数组,直接赋值更清晰简洁。
示例:
while(num / 2 !=  0)
{
res = num % 2;
a[i] = (res == 0) ? '0' : '1';
i++;
num = num / 2;
}

谢谢了,是我想的太复杂了,那保存到数组里的是‘1’或者‘0’的ASCii码吧
636f6c696e 2019-01-26
  • 打赏
  • 举报
回复
不建议用多维数组,直接赋值更清晰简洁。 示例:
while(num / 2 !=  0)
    {
        res = num % 2;
        a[i] = (res == 0) ? '0' : '1';
        i++;
        num = num / 2;
    }
  • 打赏
  • 举报
回复
不用那么复杂
unsigned int num = 0x3e;
for (int i = 0; i < sizeof(num) * 2; i++, num >>= 4)
strcpy(a[i], reference[num & 15]);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧