c – 使用“char”进行网络字节顺序转换

前端之家收集整理的这篇文章主要介绍了c – 使用“char”进行网络字节顺序转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直被教导如果一个整数大于一个char,你必须解决字节排序问题.通常,我只是将它包装在hton [l | s]中并用ntoh [l | s]将其转换回来.但我很困惑,为什么这不适用于单字节字符.

我很想知道为什么会这样,并且希望经验丰富的网络程序员帮助我解释为什么字节排序仅适用于多字节整数.

参考:https://beej.us/guide/bgnet/html/multi/htonsman.html

解决方法

你要找的是 endianness.

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

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

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

但是当数据类型只包含一个字节时,没有什么可以重新排序.

猜你在找的C&C++相关文章