本文主要是介绍【实例讲解】大端字节序和小端字节序区分方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本定义及区分方法
计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。
- 大端(big endian):在内存中,数据的高字节保存在内存的低地址中,而数据的低字节,保存在内存的高地址中。 (数据高字节->内存低地址)
- 小端(little endian):在内存中,数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。 (数据低字节->内存低地址)
举例理解
-
下面举例一个32位的数值在内存中的存放来说明大端小端的不同之处:
-
下面给出两个十六位数值的例子,下图为FAT32分区中文件
hello.txt
的目录项,图中红框圈出的是首簇号的高十六位和第十六位,图中的数字代表了读数的顺序:
因此对于每个数值,不管是32位还是16位,对于该数据来说,存储方式都遵循小端,即数据的高字节存放在内存的高位,数据的低字节存放在内存的低位。
注意事项
- 按字节存放:数据在内存中是一个字节一个字节存放的。上图所示一个
int
变量为4个字节,那么就应该用四个内存地址来存放每个字节。 - 读数顺序:读数的时候,根据大端小端决定字节间的顺序(一般而言,在计算机中都是以小端存储的,即按从后往前读字节,字节内部顺序从左至右),在字节内都是从左到右读数。
这篇关于【实例讲解】大端字节序和小端字节序区分方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!