您的位置:首页 > 理论基础 > 计算机网络

网络编程中的大小端字节序详解

2018-03-22 14:43 381 查看
    最近公司项目整改,组长让整改下自己所属模块的大小端字节序。以前自己整理过大小端字节序,不过这次再次整理的时候,发现自己对这些用法还是理解的不够透彻。
    主要有以下的一些疑问:
    1.我认为ntoh和hton其实就是一样的函数,换了个名字而已。里面的实现本质就是进行顺序互换。

    端模式:字节序分为大端字节序小端字节序,也就是字节在内存中的顺序。
    小端字节序:低字节存放于内存低地址,高字节存放于内存高位地址。

    如一个数据0x12345678
    0x0029f458   0x78
    0x0029f459   0x56
    0x0029f45a   0x34
    0x0029f45b   0x12
    内存地址的大小顺序为0x0029f458< 0x0029f459<0x0029f45a<0x0029f45b
    数据的大小顺序为0x78<0x56<0x34<0x12
    小数据在小的内存地址中,所以为小端字节序
    大端字节序和以上就相反。
     网络字节序都是大端字节序
     
      字节序转化函数

      htonl     ntohl    htons   ntohs

       h代表host,主机
       n代表net,网络
       c/s架构的传输
       1.一段调用hton的时候,在另一端接收到的时候,只要对应的调用ntoh。那就是不会有问题的。
      2.主机cpu的结构决定了自己本端是大端还是小端。如果自己本端本身本身就是大端字节序,那么就收到网络上的数据之后,就算执行ntoh函数,也是不做任何的处理。因为就是相当于大端转化为大端了。ntoh函数内部会判断主机本身是大端还是小端序。 

     
        

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络通信