linux 网络传送数据大小端问题解决

序号
英文名
中文名
描述
1
big-endian
大尾顺序
地址的低位存储值的高位
2
little-endian
小尾顺序
地址的低位存储值的低位


在不同计算机间进行数据传送时存在大小端的问题。为了解决大小端问题,可以通过以下函数。

u_short htons(u_short hostshort);

htons 是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为:高位字节存放在内存的低地址处。

网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用big-endian排序方式。


uint32_t htonl(uint32_t hostlong);

htonl 本函数将一个32位数从主机字节顺序转换成网络字节顺序。




将一个无符号短整形数从网络字节顺序转换为主机字节顺序。
#include <netinet/in.h>

uint16_t ntohs(uint16_t netshort);



ntohl()是将一个无符号长整形数从网络字节顺序转换为主机字节顺序。

uint32_t ntohl(uint32_t netlong);
netlong:一个以网络字节顺序表达的32位数。



你可能感兴趣的:(linux数据传输大小端问题)