字节序

背景知识

  • 计算机系统中以字节为单位。
  • 一个字节为8bit
  • 每个字节对应一个地址单元

大端 & 小端

  • 大端模式(big-endian)
    数据的低位保存在内存的高地址
    数据的高位保存在内存的低地址

以32bit宽的数0x12345678举例:

大端模式 举例

http://blog.csdn.net/zhaoshuzhaoshu/article/details/37600857/

  • 小端模式(little-endian)
    数据的低位保存在内存的低地址
    数据的高位保存在内存的高地址

以32bit宽的数0x12345678举例:

小端模式 举例

http://blog.csdn.net/zhaoshuzhaoshu/article/details/37600857/

  • 大端 & 小端的另一种称呼

大端 & 小端的另一种称呼

http://www.cnblogs.com/wuyuegb2312/archive/2013/06/08/3126510.html
理解之后,总结一下,记忆的方法是:
    (数据看成字符串)大端——高尾端,小端——低尾端

本机字节序 & 网络字节序

  • 本机字节序
    可能为小端模式或大端模式。
    如Intel的x86处理器,多字节是用little-endian型式。
  • 网络字节序
    网络上传输的数据存储模式为大端模式。

常用字节序转换函数

  • htonl() - host to network unsigned long

The htonl function converts a u_long from host to TCP/IP network byte order (which is big-endian).
本函数将一个32位数从主机字节顺序转换成网络字节顺序。

  • ntohl() - network to host unsigned long

The htons function converts a u_short from host to TCP/IP network byte order (which is big-endian).

  • htons() - host to network unsigned short
  • ntohs() - network to host unsigned short

References:

http://blog.csdn.net/zhaoshuzhaoshu/article/details/37600857/
http://www.cnblogs.com/wuyuegb2312/archive/2013/06/08/3126510.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容