gpt4 book ai didi

c++ - 将十六进制数转换为 bool 数组

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:36 27 4
gpt4 key购买 nike

您好,我需要在 C++ 中将十六进制数转换为二进制数。它表示一个 4 x 8 的二值图像。例如,下面的十六进制数 0xc00e90 表示图像:

00000000
11000000
00001110
10010000

这是我的工作解决方案。 u 是输入的十六进制#,image 是 bool 数组 [4][8]。但我很确定这不是最佳解决方案,实现此方案的更好方法是什么?

    for(int i=0;i<4;i++)
{
std::bitset<8> bit((u>>(3-i)*8)&0xFF);
cout<<bit<<"\n";
for (int j=0;j<8;j++)
{
image[i][j]=(bool) bit[7-j];
}
}

最佳答案

实际上 u 不是一个十六进制数,它只是一个没有底数的数字,直到你用一些底数的数字来表示它们。您的解决方案很好,另一种无需创建位集的方法:

uint32_t uu = u;
uint32_t mask = 0x80000000;
for (uint8_t i = 0; i < 32; i++) {
image[i / 8][i % 8] = (bool) (uu & mask == mask);
mask >>= 1;
}

关于c++ - 将十六进制数转换为 bool 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13888241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com