c++ - 将 8 位值掩码为 32 位值

标签 c++ bit-manipulation

我有一个 8 位值,我想将其存储在现有的 32 位值中,同时只更新 8 位上的数据并保持其他 24 位与以前一样。

例如,我可能想将 0x01 (0x00000001) 存储到现有值 0x01000100 中,我希望结果为 0x01000101。

我的第一个想法是将 0xFFFFFF00 与我要存储的 8 位值进行或运算,使其成为 0xFFFFFFXX。然后我打算将它与 32 位值相加,但我意识到如果 32 位值的最后一个字节是 00 并且我想存储 01,那将不起作用。然后我想我会只使用我原来的 8 位值并将其直接或运算成 32 位值,但如果 32 位值中的最后一个字节是 01 而我想存储 00,那将不起作用。

我意识到这可能有点难以阅读,但基本上我想做的是将 0xXXXXXXXX 的 32 位值和 0xYY (0x000000YY) 的 8 位值合并为 0xXXXXXXYY

最佳答案

您非常接近:首先,通过与 0xFFFFFF00 进行“与”运算将目标 32 位值的最低字节归零,然后在您的 8 位值中进行“或”运算。

关于c++ - 将 8 位值掩码为 32 位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32714397/

相关文章:

c++ - 将十六进制字符提供给 stringstream

c++ - 为什么 std::unordered_map 不能与 const std::string 键一起使用?

c++ - 如何删除 const_iterator 的常量性?

c++ - C++ 中带标准输出的函数对象

c - 在 C 中一次在 char 数组中设置多个值(重新实现 strcpy)

c - 循环遍历所有字典顺序的连续数字

c# - 位标志 - 我错过了什么?

c++ - 使用 omp 生成矩阵会导致麻烦,不同的 columsizes

java - 试图将一堆 C++ 代码转换为 Java - if 语句

c - 如何在 Dynamic C 中正确地从函数返回字符串?