无符号整型转换

Unsigned int conversion C++

本文关键字:转换 整型 无符号      更新时间:2023-10-16

我正在尝试用c++编写串行程序。我正在发送一个由几个uint8_t和几个uint16_t组成的字符数组,我正试图拆分和发送。

char buf[3];
uint16_t var=1500;

它们之间有什么区别(如果有的话):

buf[0]= var & 0xFF; buf[1]= var >> 8;

buf[0]= (uint8_t)(var & 0xFF); buf[1]= var >> 8;

另一端首先使用LSB期待16位整数,出于某种原因,我只是认为我没有得到预期的串行写入。我知道发生这种情况的原因有很多,但我只是想在这里把我的头脑集中在这个概念上。

大多数串行协议都需要大端顺序的数据。在这种情况下,你应该只做*reinterpret_cast<short*>(buf) = htons(var)。如果您确实需要小端序,请使用htole16,在string/endian.h中定义。