我正在使用一种专有协议(protocol),该协议(protocol)分两部分将整数作为 16 位二进制补码进行传输。首先传输 LSB,然后传输 MSB。以下恢复原值的代码是否正确?
unsigned char message[BLK_SIZE];
// read LSB to message[0] and MSB to message[1]
short my_int = (message[1] << 8) | message[0];
最佳答案
我认为如果 short
不是 16 位,代码将失败,因此您的代码在某些平台上可能会失败。不过,您可能永远找不到它失败的平台。
int16_t,如果在您的目标平台上可用,可能是更好的选择。
关于c++ - 加入 16 位有符号整数的 MSB 和 LSB(二进制补码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3180777/