我正在将系统从 python 转换为 c++。我需要能够在 c++ 中执行通常使用 Python 执行的操作struct.unpack
(将二进制字符串解释为数值)。对于整数值,我可以使用以下数据类型来实现(某种)工作stdint.h
:
struct.unpack("i", str) ==> *(int32_t*) str; //str is a char* containing the data
这适用于 little-endian 二进制字符串,但在 big-endian 二进制字符串上失败。基本上,我需要一个等效于>
在 struct.unpack 中使用标签的功能:
struct.unpack(">i", str) ==> ???
请注意,如果有更好的方法可以做到这一点,我会全力以赴。但是,我不能使用 c++11,也不能使用 Boost 以外的任何第三方库。我还需要能够解释浮点数和双精度数,例如struct.unpack(">f", str)
and struct.unpack(">d", str)
,但是当我解决这个问题时我会解决这个问题。
注意我应该指出我的机器的字节顺序在这种情况下是无关紧要的。我知道我在代码中收到的比特流总是大端的,这就是为什么我需要一个始终涵盖大端情况的解决方案。BoBTFish 在评论中指出的文章似乎提供了一个解决方案。