字节序

来源:互联网 发布:linux怎么修改文件权限 编辑:程序博客网 时间:2024/06/01 15:37

字节序有两种:大端字节序(Big Endian, BE)和小端字节序(Little Endian, LE).

网络字节序为大端字节序,个人PC字节序因平台不同而不同。

Linux操作系统提供了如下函数进行字节序的转换:

#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);   //主机字节序到网络字节序4字节转换uint32_t ntohl(uint32_t netlong);    //网络字节序到主机字节序4字节转换uint16_t htonl(uint16_t hostshort);  //主机字节序到网络字节序2字节转换uint16_t ntohl(uint16_t netshort);   //网络字节序到主机字节序2字节转换
h代表host 主机

n代表network 网络

注意:进行网络字节序转换的时候,只要转换一次就可以了,不要进行多次的转换。如果进行多次字节序转换,最后生成的网络字节序的值可能是错误的。这个需要看转换函数的实现:先判断本机是什么字节序,需要转换就转换,不需要则不转换。


原创粉丝点击