zoukankan      html  css  js  c++  java
  • 字节排序问题

    考虑一个16位整数,它由2个字节组成。内存存储这两个字节的方法有两种:一种是将低序字节存储在起始地址,这叫做小端(little-endian)字节序;另外一种方法是将高序字节存储在起始地址,这成为大端(big-endian)字节序

    clip_image002

    也就是说2个字节或以上的数据,需要考虑大小端问题。1个字节的不需要考虑.......

    图中显示,16位值,8位低字节序保存在起始地址的是小端字节序;8位高序字节保存在其实地址的大端字节序;

    主机序和网络序的转换:

    网络协议都使用大端字节序,也就是高序字节存储在起始地址,但主机不确定是大端还是小端。所以我们在将16位及以上的数据发送到网络中时,需要进行字节序的转换:

    --------统统转成大端序!!!

    转换函数:<netinet.h>

    l uint16_t htons(uint16_t host16bitvalue);

    l uint32_t htonl(uint32_t host32bitvalue);

    l uint16_t ntohs(uint16_t net16bitvalue);

    l uint32_t ntohl(uint32_t net32bitvalue);

    记忆方法:

    h-host;n-network;s-short(16位,例如TCP或UDP端口号);l-long(32位,如IPv4地址);

  • 相关阅读:
    10-关于DOM的事件操作
    09-伪数组 arguments
    08-函数
    07-常用内置对象
    Django -- 2.http协议
    Django -- 1.web应用
    web前端 --- JavaScrip之BOM
    web前端 --- JavaScrip函数与对象
    web前端 --- JavaScrip基础
    web前端 --- CSS下篇
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3581042.html
Copyright © 2011-2022 走看看