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

Endian一词是什么意思:推算机中的字节序诠释
2026-10-04 09:35:44 将来网 作者 和而泰(002402)股东刘建伟质押2048.96万股,,,,,,,占总股本2.2155% 国防科大多处展播王戟事迹 李四端 新浪网官方账号

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日内与新浪网联系。。。。。。。
来自于:新浪网官方
网友评论
真正的宠物版正太扭腰
活动报名 | 解码新望京 探微酒仙桥
分享到微博
颁布
最热评论
最新评论
暂无评论

举报邮箱:[email protected]

Copyright ? 1996-2026 SINA Corporation

All Rights Reserved 新浪公司 版权所有