C语言:合并两个字节十六进制数为 uint16_t 变量
在 C 语言中,可以使用位运算将两个字节的十六进制数合并成一个 uint16_t 类型的变量。以下示例演示了将 0x11 和 0x2e 合并成 0x112e 的过程。
uint8_t highByte = 0x11;
uint8_t lowByte = 0x2e;
uint16_t mapid = (lowByte << 8) | highByte;
合并字节时需要注意高低字节的顺序。 如果打印结果是 4398,则说明原来的两个字节合并后得到的结果是 4398 而不是 16872。 这是因为在合并时高低字节的顺序不对。
解决方法:
将低字节左移 8 位再与高字节进行或运算。
uint8_t highByte = 0x11;
uint8_t lowByte = 0x2e;
uint16_t mapid = (lowByte << 8) | highByte; // 正确的合并顺序
解释:
(lowByte << 8)将低字节0x2e左移 8 位,使其成为0x2e00。| highByte将0x2e00与高字节0x11进行或运算,最终得到0x112e。
通过这种方式,就可以正确将 0x11 和 0x2e 合并成 0x112e,即 4398。
总结:
在将多个字节合并成一个更大的数据类型时,一定要注意高低字节的顺序,确保结果的正确性。
原文地址: https://www.cveoy.top/t/topic/oPcM 著作权归作者所有。请勿转载和采集!