我一直被教导如果一个整数大于一个char,你必须解决字节排序问题.通常,我只是将它包装在hton [l | s]中并用ntoh [l | s]将其转换回来.但我很困惑,为什么这不适用于单字节字符.
我很想知道为什么会这样,并且希望经验丰富的网络程序员帮助我解释为什么字节排序仅适用于多字节整数.
解决方法
你要找的是
endianness.
big-endian架构存储多字节数据类型的字节,如下所示:
而小端架构则将它们反向存储:
当数据从一台机器传输到另一台机器时,必须重新排序单个数据类型的字节以与目标机器的字节序对应.
但是当数据类型只包含一个字节时,没有什么可以重新排序.