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

Endian一词是什么意思:推算机中的字节序诠释
2026-10-04 13:50:03 中青在线 作者 华大智造拟以2.5亿至5亿元回购股份 彰显发展信心 生猪:现货低迷,,,,,,,远月探底 白岩松 新浪网官方账号

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 新浪公司 版权所有