正在将char[]中的元素转换为int



背景:

我有两台机器之间的通信(一台plc和一台运行用c++编写的脚本的计算机(。PLC将发送存储在4096字节数组中的16位Int。

c++代码接收数据并将其存储在中

char data[4096];

我尝试了不同的方法来提取data[]中给定位置的2个字节,并将它们存储在外部int中,但没有成功。我不需要处理大小endian。

char data[4096];
//           ^  otherwise you have one incomplete 16-bit int!

在这种情况下,您确实可以使用注释中的提示,简单地转换为int16_t数组:

auto numbers = static_cast<int16_t*>(data);

为了保证这一点,数组应该已经正确对齐了(因为C++11(:

alignas(2) char data[4096];

尽管如此,您的PLC和主机可能使用不同的endianes,如果是这样,您需要为每个int16_t值交换字节。

最新更新