网络通信大端小端转换

最后都变了- 提交于 2019-12-18 01:52:20

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!