将十六进制数转换为布尔数组
Convert hex number to bool array
嗨,我需要在C++中将十六进制数转换为二进制数。它表示 4 x 8 二进制图像。例如,以下十六进制数0xc00e90表示图像:
00000000
11000000
00001110
10010000
u 是输入十六进制 #,图像是布尔数组 [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;
}
相关文章:
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题
- 以十为基数的数字到布尔数组,该数组要求二进制/基数为 2 的数字
- 存储另一个函数返回的布尔数组时遇到问题
- 尝试设置唯一指针布尔数组的值时BAD_ACCESS错误
- C++ CopyMemory 和布尔数组
- 将uint64_t位掩码转换为 std::布尔数组
- 使用 true 初始化布尔数组时出现问题
- CRC32 C++使用布尔数组和手动逐位异或实现
- 带有布尔数组成员的 C++ 结构.如何在主代码中使用
- 使用动态布尔数组时出现问题
- 以C++为单位旋转布尔数组
- 将 __m128i?布尔数组中每个布尔字节的低位提取到打包的位图
- 给定一个大小的布尔数组,这都是真实的,我将如何仅使用递归将所有值设置为false
- 在动态2D布尔数组中更改一个值似乎会更改不同数组中不同位置的值
- 将十六进制数转换为布尔数组
- 使用布尔数组时出现 Openmp 错误
- C++11 为什么 cout 从布尔数组打印大整数
- 使用 c++ 中的函数初始化 const 布尔数组
- 整数到布尔数组
- 使用SSE内部函数将布尔数组(8字节布尔)转换为int或char