美文网首页
网络通信大端小端转换

网络通信大端小端转换

作者: 精简好文 | 来源:发表于2019-12-14 09:44 被阅读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

    相关文章

      网友评论

          本文标题:网络通信大端小端转换

          本文链接:https://www.haomeiwen.com/subject/mmkcnctx.html