c++ - 网络字节序转换与 "char"

标签 c++ network-programming

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

我很想知道为什么会这样,希望经验丰富的网络程序员能帮助我阐明为什么字节顺序只适用于多字节整数。

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

最佳答案

您要找的是endianness .

大端架构存储多字节数据类型的字节,如下所示:

big-endian

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

little-endian

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

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

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

相关文章:

c++ - 在 boost transformed() 之后比较嵌套迭代器

c++ - 在数组 C++ 中使用删除关键字

c++ - C++结构位字段无法正确解析数据

networking - OPC 与 SNMP 协议(protocol)

c++ - C++中依赖网络I/O提供跨线程同步

java - HttpURLConnection 和使用特定的网络适配器

C++ 为什么对象的方法被 .通过引用但通过 -> 通过指针

c++ - 如何避免 Windows _exec* 和 _spawn* 函数在空格处拆分参数?

c++ - 为什么这个 Clang ASTMatcher 会导致错误的多态转换?

java - 制作一个java程序来通知我的方法