是否存在一组C库函数(或在某处收集的非库函数),它允许将字节数组数据转换为具有各种转换的整数(大端数据,小端数据,一个补码,两个补码)签名等等,考虑到机器自身的字节顺序?
谢谢!
答案 0 :(得分:1)
这很接近,虽然我不认为它会处理一个补码而不是两个补码。您可以添加它。 http://code.google.com/p/protobuf-c/
答案 1 :(得分:0)
据我了解,您正试图获得一个明确的BIG_ENDIAN(或LITTLE_ENDIAN)号码,而不必知道您当前主持人的惯例是什么。这应该是可能的。
据我所知,按照惯例"网络字节顺序"永远是BIG_ENDIAN。所以你可以调用htonx(),然后你知道它是BIG_ENDIAN。然后,如果你想要LITTLE_ENDIAN,你可以在你自己的代码中手动转置字节。结果应该是您自己的toBigEndian()或toLittleEndian()函数。
问题的2部分补充部分不承认同样的事情,因为它完全是一个惯例问题。假设该数字是两个字节长 - 几乎每个16位值的组合都是有效的1的补码数,也是有效的2的补码数。 "正确"值完全取决于编写该值的代码对其进行的解释。