Endian

article/2025/9/8 15:24:04

字节序(Endian)即字节顺序(Byte-Order),又称为端序或尾序(Endianness)。描述的是计算机如何组织字节组成对应的数字,是多字节数据存储和传输时字节的顺序, 是多字节数据在计算机内存(存储器)中存储或网络传输时(数字通信链路)各字节的存储排列顺序。

单字节的数据,比如C或Java中的char类型的数据,是没有字节序这一说法的,因为获取它只需要读取一个字节。而多字节数据,由于存在多个字节,所在在存储和传输时可以使用不同的顺序进行操作。简单来说,字节序是指超过一个字节的数据类型在内存中存储的顺序。

字节数据的字节序跟多字节类型的数据有关,比如intshortlong,对单字节bytechar没有影响。

在几乎所有的硬件机器上,多字节对象都被存储为连续的字节序列。

字节序分为两种排列模式,分别是大端字节序和小端字节序。

  • 大端:高位字节数据存放在内存低地址处,低位字节数据存放在内存高地址处。
  • 小端:高位字节数据存放在内存高地址处,低位字节数据存放在内存低地址处。

大端BE是指低地址存放最高有效字节(MSB),小端LE则是低地址存放最低有效字节(LSB)。

4933701-7d68dd0202001735.png
大端小端

为什么需要注意字节序的问题呢?如果编写的程序只是在单机环境下运行,并不和其它程序打交道,那么完全可以忽略字节序的存在。如果你的程序要跟别的程序产生交互,比如C/C++语言编译的程序中数据存储顺序是跟编译平台所在的CPU相关的,Java编写的程序则采用大端BE的方式来存储数据。如果使用C/C++在x86平台下编写的程序与Java程序互通时会产生什么结果呢?比如将C程序中指向0X12345678的指针传递给Java程序,由于Java程序采取大端方式存储数据,很自然地会将传递的数据翻译为0x78563412。因此在将C程序传递给Java程序钱必须进行字节序的转换。

内存高低地址

C程序映射中内存的空间布局

  • 最高内存地址 0x FFFF FFFF
  • 栈区:从高内存地址往低内存地址发展,即栈底在高地址栈顶在低地址。
  • 堆区:从低内存地址往高内存地址发展
  • 全局区:常量和全局变量
  • 代码区
  • 最低内存地址:0x 0000 0000
4933701-175a0777cb2627da.png
内存空间分布

高低位字节数据

例如:十六进制数 0x12345678 占4个字节,分别是 0x12、0x34、0x56、0x78,因此在该数字中0x12属于高位字节数据,0x78属于低位字节数据。

4933701-62915b9991337951.png
十六进制

计算机在处理字节序的时候,并不知道什么是高位字节,什么是低位字节,它只知道按顺序读取字节,先读取第一个字节再读取第二个字节,如果是大端字节序则先读取到的就是高位字节,后读取的是低位字节。

对于字节序的处理,只有在读取的时候才必须区分字节序,其他情况都不用考虑。CPU处理器在读取外部数据时必须知道数据的字节序,才能将其转换为正确地值。当向外部设备写入数据时,是不用考虑字节序的,只需要正常写入值即可,外部设备会自己处理字节序的问题。

大端字节序

大端字节序(BE, Big Endian)又叫大端序或高端序,是将高序字节存储在内存的起始地址,内存地址低位存储着高位数据,内存地址高位存储着低位数据。

大端模式比较符合人类的阅读习惯,即高位字节在前低位字节在后,内存低位地址存放着高位数据,这是人类读写数值的方式。

内存低地址...高位字节数据......低位字节数据...内存高地址
0x 0000 0001...0x120x340x560x78...0x 0000 000F

小端字节序

小端字节序(LE, Little Endian)又叫小端序或低端序,是指内存地址低位存放低位数据,由于计算机内存数据处理是从低位开始的,因为小端模式更加符合计算机的处理方式。

内存低地址...低位字节数据......高位字节数据...内存高地址
0x 0000 0001...0x780x560x340x12...0x 0000 000F

计算机电路优先处理低位字节效率较高,因为计算机默认都是从低位开始的,所以计算机内部处理都是小端字节序。但人类习惯读写大端字节序。所以除了计算机的内部处理,其他的应用场合几乎都是大端字节序,比如网络传输和文件存储。

常见文件的字节序

文件类型字节序
Adobe PhotoshopBig Endian
BMP(Windows and OS/2 Bitmap)Little Endian
DXF(AutoCard)Variable
GIFLittle Endian
IMG(GEM Raster)Big Endian
JPEGBig Endian
FLI(Autodesk Animator)Little Endian
MacPaintBig Endian
PCX(PC Paintbrush)Little Endian
PostScriptNotApplicable(text!)
POV(Persistence of Vision ray-tracer)Not Application(text!)
QIM(Quicktime Movies)Little Endian(on a Mac!)

字节序典型的应用是整数在内存中存放的方式(主机字节序)和网络传输时的顺序(网络字节序)

主机字节序

主机字节序(Host Byte Order, HBO)是指机器的字节序,有大端和小端模式,由机器的CPU处理器的处理决定,小端模式较为常见。

比如整数在内存中保存的顺序,在不同的处理器中对应不同的模式。

计算机的存储容量是以字节为最小单位来计算的,字节是存储器的最小存储单元。一个存储单元可以存储一个字节,存储单元在计算机中最小的信息单位是二进制位bit,每8个二进制位组成一个字节byte

物理内存是以字节为单位进行数据存储的,每个内存存储位置都拥有一个索引或地址,每个字节可以存储一个8位数字(介于0x00和0xff之间),因此必须保留不止一个字节来存储一个更大数字。

可以将内存看成一个成大的数组,比如4GB内存是一个长度为4294967296的数组。数组的索引也就是内存地址,左边是较小的地址,右边则越来越大,直到最大值。

网络字节序

网络字节序(Network Byte Order, NBO)是TCP/IP中规定好的一种数据表示格式,网络字节序采用大端(Big Endian)排列按照从高到低的顺序存储,在网络上使用统一的网络字节顺序可以避免兼容性问题。

TCP/IP中规定好了一种数据表示格式,与具体的CPU类型、操作系统等无关,从而保证数据在不同主机之间传输时能够被正确解释。

网络序都是采用的是大端模式,因为TCP/IP协议对各层协议统一规定采用大端模式。


http://chatgpt.dhexx.cn/article/hZ085HkY.shtml

相关文章

一个神奇的网站 Papers with code

这个网站会把某个方向的 论文和代码总结出来。 有助于提高个人效率。 https://paperswithcode.com/sota

这是一个神奇的网站

2012年1月9日,下午2点,打开www.12306.cn.硬是提交了100多次才进入这个神奇的网站。结果又提交了100多次订单才成功了,很不幸运的是尼玛硬座的,等等是无号的...

【工具】sci-hub:一个神奇的免费下载文献的网站

title: “【工具】sci-hub:一个神奇的免费下载文献的网站” date: 2019-09-20T10:44:5508:00 lastmod: 2019-09-20T10:44:5508:00 tags: [“工具”,“sci-hub”] categories: [“工具”] sci-hub:一个神奇的免费下载文献的网站(使用技巧&…

最近发现的几个神奇CS学习网站

最近发现的几个CS学习网站,真的灰常良心,希望自己以后少吃瓜,多看看别人的路线和学习笔记。 一、北大信科大佬的CS笔记 https://csdiy.wiki/#_8 自己也是打算学习各种国外的优质课程(最近在学CS224n课程和做对应的project&…

冷门但超级有用的神奇网站推荐

给大家介绍一些神奇的具有强大功能的网站,有些功能特别的有用 查询名下手机号 https://getsimnum.caict.ac.cn 查询内容将以短信的形式下发到手机,一个人一天只能查询一次,因为是工信部出品的,所以安全性十分有保障 查询手机号…

快速下载一个网站

有时候我们需要分析一个网站,或者基于一个网站进行魔改,这个就需要一些特殊的手段将网站源码下载到本地了,其实目前大部分网站都是有代码压缩的,很难去有修改。 这里我就教大家如何快速获取一个网站的所有资源,包括源码…

给理工男女的一个神奇网站!

2018 AI开发者大会是一场由中美人工智能技术高手联袂打造的AI技术与产业的年度盛会!这里有15硅谷实力讲师团、80AI领军企业技术核心人物、100技术&大众实力媒体、1500AI专业开发者——我们只讲技术,拒绝空谈! 参加 2018 AI开发者大会&…

推荐一个命名变量的神奇网站 CODELF

推荐一个命名变量的神奇网站 CODELF 在我们写程序的时候,总是需要去给各种变量命名。于是各种命名大法都上来了,有拼音的,有首字母缩写的,各种各样。而我们推荐的命名肯定是英文的驼峰命名。今天给大家推荐一个网站:h…

mc神奇宝贝服务器网站,我的世界1.12.2 master 神奇宝贝服务器

———— 服务器名称:master—神奇宝贝 ———— 服务器版本:1.12.2 ———— 服务器类型:神奇宝贝 ———— 服务器的IP:进群下载客户端 ———— 服务器QQ群:609019804 ———— 服务器特色 游戏模式:休闲…

Craigslist :一个神奇的网站

转载:https://blog.naaln.com/2017/05/a-magic-website-raigslist/ 今天在看书的时候看到一个问题,什么是一个好产品?是好用的,还是好看的? 显而易见,应该是一个好用的产品。有什么产品是特别好看&#xff…

codewars 一个很神奇的网站

今天闲着无聊,逛推酷,无意间发现了一篇很有意思的帖子,帖子里写了国外的一个很有意思的网站,叫codewars ,这个网站的宗旨是把写代码 当成像打怪升级一样。上面有很多的题目,你可以用你熟悉的语言答题&…

p站,一个神奇的网站

说起p站,不少人老司机肯定想到的是那一个p站,但今天我要说的是另一个----pixiv,一个插画网站。 不知道什么原因,网站在国内被墙了,想弄个随机图片还得翻墙,但由于服务器网速实在太慢了,只能网上…

记录一个神奇的网站

Aurorahttps://arr003.network/

给理工男女的一个神奇网站

十一长假已经只剩下最后两天,你给自己定下的假期学习计划进展如何? 你是在家,还是在想家,还是在其他国家? 为了让家里蹲的诸位不虚度光阴,也为了让那些堵在高速路上的童鞋打发时间,现隆重给大家…

五个私藏已久的神奇网站,你想要的全都有

1⃣️悦音配音 一款非常实用的创作工具,做各种风格的配音,提取你想要的视频文案或音频文案,导入图片,一键生成三联封面,无水印视频下。 2⃣️万有导航 聚合资源网站,一个庞大的资源整合神仙网站&#xff…

8个好玩又实用的神奇网站,帮你打开新世界大门!

有小伙伴问:有没有即轻松好玩,又可以学到各种奇怪知识的网站? 下面向你安利8个网站,快来看看吧! Wikihow zh.wikihow.com 这是一个百科全书式的网站,内容是为我们生活中会遇到的各种问题提供了解决方案…

9个宝藏级的神奇网站!个个精品,让你人生开挂,效率翻倍

分享9个让你先是眼前一亮,继而觉得好用的神奇网站,每个都是效率神器! 01 . designtools 一个超级神奇的网站,我把它叫做设计师必备网站! 里面包含了11个超强的设计工具,每一个都很惊艳,举个…

如何关掉 pyg解密小组声明窗口 (飘云阁番茄插件)

vs 重新安装番茄助手之后,替换了crack 里面的VA_X.dll。 重启电脑,打开vs 弹出下面的窗口 网上查了很多资料说什么要去DLL、清理注册表,都不管用。 【原因】 安装的番茄小助手没有注册成功,需要将剪切板上的注册信息输入到番茄插…

PYG解密小组的Visual Assist X插件完全卸载

问题一:过期或无法加载 如果之前使用的是替换 VA_X.dll 的破解版,安装新版后,由于系统残留 VA_X 过期信息,可能会导致新版变灰或无法加载。关闭VS,管理员权限运行 Trial-Reset。选择下图中红框所指的选项,选…

VS2015 Visual Assist X 破解版安装教程

文章目录 ## 前言 此方法适合VS2010~VS2015版本。 安装包下载方法:公众号【3D视觉工坊】后台回复「VA助手」,即可得到安装包下载链接。 工作以来,一直在使用VS2015,之前一直根据的网上飘云阁的破解方法进行破解,可是…