【发布时间】:2011-05-20 16:26:39
【问题描述】:
是否有一组 C 库函数(或在某处收集的非库函数)允许通过各种转换(大端数据、小端数据、一个补码签名、二进制补码)将字节数组数据转换为整数签名等),考虑到机器自身的字节顺序?
谢谢!
【问题讨论】:
-
你能解释一下 htonl() 和朋友 + 投射不能解决你的问题吗?
-
htonl() 没有严格定义其输入或输出的结束性。如果有严格定义的标准,请告诉我。强制转换不是一个可行的解决方案,因为有符号和无符号数据之间的转换依赖于架构,而数据可能会在架构之间移动。在我的脑海中,我看到了一个这样的函数:convert_data(buffer, BIG_ENDIAN | TWO_COMPLEMENT)。
-
所以你有一个未定义的数据传输机制(因此 htonl 不会有帮助),但是数据格式/容器告诉你它是如何存储的,你正在寻找一个可以转换它的库.一个都不知道。想了一会儿xparam,但看起来你已经有了一个容器/序列化。
-
是的,这是一个相当准确的描述。数据由第三方存储在文件中,我无法更改格式,可能会有所不同,并由第三方指定。
标签: c binary endianness