【发布时间】:2010-12-19 09:46:23
【问题描述】:
您好,我正在编写一个库,用于通过 rs-232 串行连接与外部设备进行通信。
通常我必须传达一个包含 8 位 = 1 字节字符或 16 位 = 2 字节数字的命令。如何以便携的方式执行此操作?
主要问题
从阅读其他问题看来,标准不保证 1byte = 8bits, (在标准 $1.7/1 中定义)
C 中的基本存储单元 ++内存模型是字节。一个字节至少大到足以包含 基本执行的任何成员 字符集,由一个 连续的位序列, 其中的数量是 实现定义。
如何保证char的位数?我的设备需要准确的 8 位,而不是至少 8 位。
我意识到几乎所有实现都有 1byte = 8 位,但我很好奇如何保证它。
Short->2 字节检查
希望您不介意,我还想运行我为您提出的短 -> 2 字节转换的解决方案。我是字节转换和跨平台可移植性的新手。
为了保证short的字节数我猜我需要需要
做一个 sizeof(short)。如果 sizeof(short)=2 转换为字节并检查字节顺序(如here)
-
如果 sizeof(short)>2 然后将 short 转换为字节,检查字节顺序(如here),然后检查最重要的字节是否为空并删除它们?
这是正确的做法吗?有没有更好的办法?
非常感谢
【问题讨论】:
标签: c++ cross-platform serial-port