大小端定义
Posted lanyangsh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大小端定义相关的知识,希望对你有一定的参考价值。
大小端的定义
Big-Endian和Little-Endian的定义如下:
- Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
- Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:
大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
高位--------------------低位
内存中的表示:
buf[0]=0x12
buf[1]=0x34
buf[2]=0x56
buf[3]=0x78
可见,大端模式和字符串的存储模式类似。
小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
低位---------------------高位
内存中的表示
buf[0]=0x78
buf[1]=0x56
buf[2]=0x34
buf[3]=0x12
网络中的字节序
网络中的数据均使用大端模式,发送端需要使用htons/htonl来确保转换为大端模式(网络字节序),接收端需要使用ntohs/ntohl来确保转换为本机的大(小)端模式(主机字节序)。
应用层的字节序
要根据具体应用协议去区分,比如mysql通信协议,使用的是the least significant byte first,其实就是小端方式。
以上是关于大小端定义的主要内容,如果未能解决你的问题,请参考以下文章