1、 使用说明
大端又叫网络字节序,小端又叫主机字节序,在网络通信传输数据时候,通常是采用大端对齐方式,而在本机电脑中存储是小端对齐方式,像一些网络传输协议:RTP,在构造RTP头时候就需要转换为大端对齐方式。
2、看图详解大端小端
大端和小端.png
3、如何转换
在Linux系统下:htonl(),htons(), ntohl(), ntohs()的头文件及函数定义如下:
#include <arpa/inet.h>
/常用函数: h:host to: 转换为 n:network l:long类型 s:short类型/
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
注意: 只有数据类型超过1个字节以上的数据才需要进行转换
4、使用代码
#include <stdio.h>
#include <arpa/inet.h>
int main()
{
long iSmallData=0x12345678;
long iBigData;
iBigData=htonl(iSmallData);//小端转大端(主机字节序转网络字节序)
printf("iSmallData=%x,iBigData=%x\n",iSmallData,iBigData);
return 0;
}
输出结果:iSmallData=12345678,iBigData=78563412
网友评论