我有一个包含两个元素的 uint8_t 数组:
uint8_t ui8[2]; // uint8_t array
ui8[0] = 70; // LSB
ui1[1] = 60; // MSB
我想从这两个uint8_t值中获取一个uint16_t数字(而不是数组)。为了得到这个结果,我使用了以下方法:
uint16_t ui16 = 6070
uint16_t ui16 = ui8[1] | (ui8[0] << 8);
但我得到了 uint16_t ui16 = 15430;
我使用的方法是错误的吗?还是有什么东西缺失了?
ui8[0]
中有70,在ui8[1]
中有60,但无论如何,似乎你想使用小端。然而仍然不清楚的是,为什么你想进行十进制运算。如果你将8位值视为16位值的二进制“半部分”,那么60和70“连接”起来就变成了15430。 - Biffen