网络通信大端小端转换

2019-12-14  本文已影响0人  精简好文

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

上一篇 下一篇

猜你喜欢

热点阅读