我一直被教导,如果整数大于char,则必须解决字节排序问题。通常,我只将其包装在hton [l | s]中,然后用ntoh [l | s]转换回去。但是我很困惑为什么这不适用于单字节字符。

我不知道为什么会这样,并且想请一位经验丰富的网络程序员来帮助我阐明为什么字节顺序仅适用于多字节整数。

引用:https://beej.us/guide/bgnet/html/multi/htonsman.html

最佳答案

您正在寻找的是endianness

big-endian体系结构存储多字节数据类型的字节,如下所示:

c++ - 使用 "char"进行网络字节顺序转换-LMLPHP

而小端架构则将它们反向存储:

c++ - 使用 "char"进行网络字节顺序转换-LMLPHP

当数据从一台计算机传输到另一台计算机时,必须将单个数据类型的字节重新排序以与目标计算机的字节序相对应。

但是,当一种数据类型仅由一个字节组成时,就没有什么要重新排序的。

关于c++ - 使用 "char"进行网络字节顺序转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2357720/

10-14 14:36
查看更多