c++ - 加入 16 位有符号整数的 MSB 和 LSB(二进制补码)

标签 c++ integer twos-complement

我正在使用一种专有协议(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/

相关文章:

mysql - mysql中autoincrement能产生的最大ID号是多少

JavaScript 在 CRM 2011 字段中显示单词 "null",无值

python - 在 Python 中取 int 的 2 次方模数的首选方法是什么

c++ - SFINAEd-out 函数是否隐藏了从基类显式导入的重载

c++ - 如何将文本文件转换为 MPI_Bcast 可以发送的格式?

c++ - 我可以检查输入的值是 C++ 中的字符串还是整数吗

binary - 一个数的补码和它的负数之差?

haskell - 以二进制补码表示形式读取/写入 Haskell 整数

c++ - std::thread 管理:使用和最佳实践

c++ - 有没有办法检查按钮是否被选中?