Endian一词是什么意思:推算机中的字节序诠释

Endian一词是什么意思:推算机中的字节序诠释
2026-10-04 06:29:00 将来网 作者 拐走婴儿35年获刑3年 投诉找对渠路才高效!各平台适配场景全梳理 李瑞英 新浪网官方账号

Endian 是推算机领域中暗示“字节分列挨次”的术语,,,,,,,中文通常译为端序或字节序。。。。。。当一个数据由多个字节组成时,,,,,,,Endian 用来注明这些字节在内存、文件或网络数据中的先后地位。。。。。。最常见的两种大局是 Big Endian(大端序)和 Little Endian(幼端序)。。。。。。

单一来说,,,,,,,Endian 不是在注明一个数“是几多”,,,,,,,而是在注明这个数的分歧字节“怎么排”。。。。。。统一个整数在大端和幼端中代表的数值能够齐全一样,,,,,,,只是它在内存或数据流中的分列方式分歧。。。。。。因而,,,,,,,看到 endian 这个词时,,,,,,,通常要持续确认它指的是 big endian 还是 little endian。。。。。。

Endian到底是什么意思?????? ?

推算机通常以字节为单元处置数据,,,,,,,一个字节蕴含 8 个二进造位。。。。。。像字符这样的数据可能只占一个字节,,,,,,,但整数、浮点数、功夫戳和内存地址等数据,,,,,,,往往由 2 个、4 个或更多字节组成。。。。。。

例如,,,,,,,十六进造数 0x12345678 由四个字节组成:

  • 0x12:最高有效字节
  • 0x34:次高有效字节
  • 0x56:次低有效字节
  • 0x78:最低有效字节

Endian 关注的就是这四个字节在陆续存储空间中的分列挨次。。。。。。这里的“高”与“低”指的是数值权沉,,,,,,,不是内存地址凹凸,,,,,,,也不是字节在屏幕上的高低地位。。。。。。

为什么统一个数会有大端和幼端两种分列方式?????? ?

由于多字节数据必要被拆分后放入陆续的字节地位,,,,,,,而分歧处置器、操作系统或数据体式能够选取分歧的约定。。。。。。如果内存地址从低到高顺次增长,,,,,,,数值 0x12345678 的分列能够暗示为:

统一个数在两种端序中的字节分列
端序 低地址到高地址的字节挨次 分列特点
大端序 Big Endian 12 34 56 78 最高有效字节放在低地址
幼端序 Little Endian 78 56 34 12 最低有效字节放在低地址

大端序的分列方式与人们书写十六进造数字的挨次更靠近:先看到最高位,,,,,,,再看到最低位。。。。。。幼端序则把最低有效字节放在最前面。。。。。。无论选取哪种分列,,,,,,,沉新依照对应规定读取后,,,,,,,得到的数值依然是 0x12345678。。。。。。

“Big Endian”和“Little Endian」剽两个名称,,,,,,,通常被以为与文学文章中关于“大端剥蛋”与“幼端剥蛋”的争论有关。。。。。。后来,,,,,,,这组说法被推算机领域借来描述数据分列挨次。。。。。。这里的“端”不是数据的一端被截断,,,,,,,而是指一个多字节数据从哪一端起头排劣祝。。。。。

Endian和字节序、位序是一回事吗?????? ?

在大无数技术文档中,,,,,,,Endian 重要会商的是字节序,,,,,,,也就是多个字节之间的挨次。。。。。。因而,,,,,,,“Endian”“端序”和“字节序”时时被当作近似同义词使用。。。。。。不外,,,,,,,Endian 不应直接等同于位序。。。。。。

字节序关注字节之间的挨次

以 0x1234 为例,,,,,,,它由 0x12 和 0x34 两个字节组成。。。。。。大端序通常写为 12 34,,,,,,,幼端序通常写为 34 12。。。。。。这里变动的是两个字节的排各地位。。。。。。

位序关注一个字节内部的位若何诠释

一个字节 0x12 内部还蕴含 8 个二进造位。。。。。。会商这些位在寄放器、总线或通讯和谈中的传输挨次时,,,,,,,涉及的是位序、位编号方式或比特传输挨次。。。。。。它与大端、幼端的字节分列不是统一个问题。。。。。。

因而,,,,,,,看到某个资料说“选取幼端”,,,,,,,通常只能先理解为“多字节数据按幼端字节序排劣妆,,,,,,,不能据此揣度每个字节内部的比特肯定依照某种物理方向传输。。。。。。

什么时辰必须分辨 Endian?????? ?

若是数据只在统一法式、统一运行环境中使用,,,,,,,法式通常; ;; ;;嵋勒盏鼻捌教ǖ墓娑ㄊ迪侄列,,,,,,,开发者不定必要直接观察每个字节。。。。。。但在以下情况下,,,,,,,Endian 就会成为必须明确的概想:

  • 读取二进造文件:文件体式可能划定整数、长度字段或偏移量选取大端或幼端。。。。。。若是读取法式使用了相反规定,,,,,,,数值就会被解析谬误。。。。。。
  • 网络通讯:很多互联网和谈中的整数选取约定好的网络字节序,,,,,,,常见网络字节序为大端序。。。。。。发送端和接管端必要遵循和谈划定,,,,,,,而不能只按本机习惯处置。。。。。。
  • 跨平台互换数据:分歧处置器或系统可能使用分歧的默认端序,,,,,,,数据体式若是没有明确划定端序,,,,,,,就容易出现兼容问题。。。。。。
  • 挪用表部接口:法式与设备、操作系统接口或其他说话互换二进造结构体时,,,,,,,字段的字节排劣注长度和对齐方式都可能影响了局。。。。。。
  • 查看内存和调试数据:调试器展示的字节序列与源代码中的整数写法可能分歧,,,,,,,理解端序有助于判断内存中的原始内容。。。。。。

判断时能够先问两个问题:第一,,,,,,,数据是否由多个字节组成;; ;; ;;第二,,,,,,,数据是否必要在分歧法式、平台或设备之间互换。。。。。。若是只是处置单个字节,,,,,,,例如一个 0 到 255 的数值,,,,,,,通常不存在大端或幼端的区别;; ;; ;;若是是 16 位、32 位或 64 位数据,,,,,,,就必要确认分列规定。。。。。。

Endian和“数字写法”为什么看起来不一样?????? ?

人们书写 0x12345678 时,,,,,,,通常从左到右依照最高位到最低位排劣祝。。。。。这是数字的暗示法。。。。。。内存则是按地址保留一个个字节,,,,,,,地址从低到高分列时,,,,,,,具体先放哪个字节由端序决定。。。。。。

因而,,,,,,,法式员在源代码中看到的数字挨次,,,,,,,并不愿定蹬宗内存查看工具显示的字节挨次。。。。。。好比幼端机械上,,,,,,,变量的值依然能够写作 0x12345678,,,,,,,但从低地址起头查看原始内存时,,,,,,,可能顺次看到 78、56、34、12。。。。。。两者并不矛盾:前者是在表白数值,,,,,,,后者是在展示存储布局。。。。。。

同样,,,,,,,文本内容也不能单一按“字符串是大端还是幼端”来理解。。。。。。通常单字节字符通常不存在这种字节分列问题;; ;; ;;某些多字节字符编码或编码文件体式可能划定端序,,,,,,,这时要依照具体编码和文件规范判断,,,,,,,而不能仅凭“文字由多个字节组成”就直接套用大幼端结论。。。。。。

看到 Endian 时应该若何理解?????? ?

能够把它概括为一句话:Endian 描述的是多字节数据中,,,,,,,各个字节依照什么挨次存放或传输。。。。。。若是资料写的是 Big Endian,,,,,,,通常暗示最高有效字节在前;; ;; ;;若是写的是 Little Endian,,,,,,,通常暗示最低有效字节在前。。。。。。

现实阅读文档时,,,,,,,还应结合数据的天堑和规定一路看:字段占几个字节、低地址若何界说、和谈是否指定网络字节序、文件头是否蕴含端序象征,,,,,,,以及读取方是否必要进行字节互换。。。。。。只有在这些前提明确后,,,,,,,能力正确判断一串十六进造字节代表什么数值。。。。。。

出格申明:以上文章内容仅代表作者自己概想,,,,,,,不代表新浪网概想或态度。。。。。。如有关于文章内容、版权或其它问题请于文章颁发后的30日内与新浪网联系。。。。。。
来自于:新浪网官方
网友评论
最高检党组副书记出席《沉器》看片会
温反李斌:高端AD芯片神机NX9031和nio世界车型搭载于来路L90
分享到微博
颁布
最热评论
最新评论
暂无评论

举报邮箱:[email protected]

Copyright ? 1996-2026 SINA Corporation

All Rights Reserved 新浪公司 版权所有