本文主要是介绍Little-Endian小端存储和 Little-Endian大端存储,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Little-Endian小端存储和 Little-Endian大端存储
- 大小端存储简介
- 1. 什么是高/低地址端
- 2. 代码示例判断
大小端存储简介
在所有的介绍字节序的文章中都会提到字 节序分为两类:Big-Endian和Little-Endian,引用标准的Big-Endian和Little-Endian的定义如下:
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
1. 什么是高/低地址端
首先我们要知道C程序映像中内存的空间布局情况:在《C专 家编程》中或者《Unix环境高级编程》中有关于内存空间布局情况的说明,大致如下图:
2. 代码示例判断
由于联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little- endian还是Big-endian模式读写。
#include <stdio.h>
#include <stdlib.h>int main(int argc,char *argv[])
{union {int a;char b; }c;c.a = 0x12345678;printf("%x\n",c.b);return 0;
}
通过运行结果可以照顾该主机序是小端存储的
这篇关于Little-Endian小端存储和 Little-Endian大端存储的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!