在 C 语言中,可以使用位运算将两个字节的十六进制数合并成一个 uint16_t 类型的变量。以下示例演示了将 0x110x2e 合并成 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
  • | highByte0x2e00 与高字节 0x11 进行或运算,最终得到 0x112e

通过这种方式,就可以正确将 0x110x2e 合并成 0x112e,即 4398

总结:

在将多个字节合并成一个更大的数据类型时,一定要注意高低字节的顺序,确保结果的正确性。

C语言:合并两个字节十六进制数为 uint16_t 变量

原文地址: https://www.cveoy.top/t/topic/oPcM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录