字节顺序

✍ dations ◷ 2025-11-20 10:50:53 #字节顺序

字节顺序,又称端序或尾序(英语:Endianness),在计算机科学领域中,指电脑内存中或在数字通信链路中,组成多字节的字的字节的排列顺序。

在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量x地址为0x100,那么其对应地址表达式&x的值为0x100。且x的四个字节将被存储在电脑内存的0x100, 0x101, 0x102, 0x103位置。

字节的排列方式有两个通用规则。例如,将一个多位数的低位放在较小的地址处,高位放在较大的地址处,则称小端序;反之则称大端序。在网络应用中,字节序是一个必须被考虑的因素,因为不同机器类型可能采用不同标准的字节序,所以均按照网络标准转化。

例如假设上述变量x类型为int,位于地址0x100处,它的值为0x01234567,地址范围为0x100~0x103字节,其内部排列顺序依赖于机器的类型。大端法从首位开始将是:0x100: 0x01, 0x101: 0x23,..。而小端法将是:0x100: 0x67, 0x101: 0x45,..

“endian”一词来源于十八世纪爱尔兰作家乔纳森·斯威夫特(Jonathan Swift)的小说《格列佛游记》()。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为“大端派(Big-Endians)”和“小端派(Little-Endians)”。以下是1726年关于大小端之争历史的描述:

1980年,丹尼·科恩(Danny Cohen),一位网络协议的早期开发者,在其著名的论文""中,为平息一场关于字节该以什么样的顺序传送的争论,而第一次引用了该词。

在哪种字节顺序更合适的问题上,人们表现得非常情绪化,实际上,就像鸡蛋的问题一样,没有技术上的原因来选择字节顺序规则,因此,争论沦为关于社会政治问题的争论,只要选择了一种规则并且始终如一地坚持,其实对于哪种字节排序的选择是任意的。

对于单一的字节(),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。

对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:

大端序(英:big-endian)或称大尾序。

示例中,最高位字节是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。

最高的16bit单元0x0A0B存储在低位。

小端序(英:little-endian)或称小尾序。

最低位字节是0x0D 存储在最低的内存地址处。后面字节依次存在后面的地址处。

最低的16bit单元0x0C0D存储在低位。

当更改地址的增长方向,使之由右至左时,表格更具有可阅读性。

最低有效位(LSB)是0x0D 存储在最低的内存地址处。后面字节依次存在后面的地址处。

最低的16bit单元0x0C0D存储在低位。

混合序(英:middle-endian)具有更复杂的顺序。以PDP-11为例,0x0A0B0C0D被存储为:

可以看作高16bit和低16bit以大端序存储,但16bit内部以小端存储。

网络传输一般采用大端序,也被称之为网络字节序,或网络序。IP协议中定义大端序为网络字节序。

Berkeley套接字定义了一组转换函数,用于16和32bit整数在网络序和本机字节序之间的转换。htonl,htons用于本机序转换到网络序;ntohl,ntohs用于网络序转换到本机序。

一般用于描述串行设备的传输顺序。网络协议中只有数据链路层的底端会涉及到。

相关

  • 霜是一种通常用于皮肤的外用制剂。也有用于其他粘膜如直肠或阴道的霜。霜通常被认为是一种药剂产品,因为即使是用作化妆品的护肤霜也同样基于药学开发的技术,并且不作为药物使
  • 2B类致癌物2B类致癌物(英语:Group 2B carcinogens),为国际癌症研究机构(International Agency for Research on Cancer,IARC)对致癌物质的分类,此类物质(或其混合物)可能对人类致癌。现有236类物
  • 共有衍征共有衍征或共源性状,在演化生物学是一种两个或以上终端分类单元共有及从其最近共同祖先承袭的衍生性状状态。共有衍征是一种衍生而来的性状状态,并源自其后最共同祖先。假若有
  • 卓变形虫属卓变形虫属(学名:Chaos)是变形虫的一个属,属叶足亚门变形虫科,属名最早于1767年由卡尔·林奈描述发表。本属目前包含四种物种,最知名的物种卡罗来纳卓变虫(Chaos carolinensis),又称
  • 2019年古巴宪法公投2019年古巴共和国宪法公投在2019年2月24日于古巴举行。2018年7月,古巴的全国人民政权代表大会通过新宪法草案,随后交由公民投票决定是否通过新宪法。2019年4月10日,古巴共产党中央委员会第一书记劳尔·卡斯特罗在第九届全国人民政权代表大会第二次特别会议上宣布根据公投结果新宪法正式生效。公投题目原文为:“¿Ratifica usted la nueva Constitución de la República?”(中文含义:“您是否批准共和国的新宪法?”)。新宪法的修订方案包括:宪法修正案草案原本
  • 陈文宾陈文宾(1973年10月5日-),为台湾的棒球选手之一,曾经效力于中华职棒统一狮、兴农牛及中信鲸,守备位置为一垒手。2002年夺下的中华职棒本垒打王奖,更是中华职棒第一位输出到日本职棒的野手。1 郑百胜 | 5 吕文生 | 7 林克 | 8 吴思贤 | 9 罗敏卿 | 11 谢佳训 | 12 耿健辉 | 14 贺亮德 | 15 罗伟 | 16 罗国璋 | 18 谢长亨 | 19 宋荣泰 | 21 江泰权 | 22 曾智侦 | 23 吴林炼 | 24 雷猛 | 26 陈文宾 | 30 马汉 | 31 郭进
  • 维斯多姆·埃米 维斯多姆·埃米(意大利语:Wisdom Amey,也译维斯多姆·阿梅;2005年8月11日-),是一名意大利足球运动员,场上司职中后卫,目前效力于意甲球队博洛尼亚。2021年5月12日,在博洛尼亚0-2不敌热那亚的意甲比赛中,埃米在第89分钟时替补登场,完成了职业生涯首秀。以15岁274天的年龄,他也成为了意甲历史上出场最年轻的球员。埃米出生于意大利格拉帕巴萨诺(英语:Bassano del Grappa),他是多哥裔(英语:Togolese people in Italy)。
  • 马克西姆·李维诺夫马克西姆·马克西莫维奇·李维诺夫(俄语:Максим Максимович Литвинов;1876年7月17日-1951年12月31日),苏联外交官、革命家。生于沙皇俄国格罗德诺省比亚韦斯托克(今波兰)犹太人银行家家庭。1930年至1939年期间曾任苏联的外交部长。任内积极推行集体安全政策,与西方国家改善关系。1933年成功促使美国承认苏联。1934年使苏联加入国际联盟。1939年二战前夕,因国际局势及苏联外交政策变化,身为犹太人的李维诺夫被莫洛托夫所代替。1941年7月,苏德战争开始了,约瑟夫·斯大
  • 考尼茨-里特贝格亲王考尼茨-里特贝格亲王文泽尔·安东(德语:Wenzel Anton Reichsfürst von Kaunitz-Rietberg,1711年2月2日-1794年6月27日),是神圣罗马帝国哈布斯堡王朝政治家、外交家。他作为开明专制主义的支持者,在玛丽亚·特蕾莎、约瑟夫二世和利奥波德二世统治期间担任了近40年的首相,并长期负责帝国的外交政策。考尼茨是1756年外交革命的策划者,他在七年战争前成功将法国与俄罗斯拉拢成为哈布斯堡的盟友。1764年,他被晋封为神圣罗马帝国亲王(英语:Prince of the
  • 尼科·帕克尼科·帕克(英语:Nico Parker,2004年12月9日-)是一名英国女演员。她的首次亮相是在蒂姆·伯顿执导的华特迪士尼影业电影《小飞象》(2019年)里,饰演米莉·法瑞尔.她是电影导演兼编剧奥尔·帕克(Ol Parker)和女演员谭蒂·纽顿(Thandiwe Newton)的女儿 。帕克出生在电影导演兼编剧奥尔·帕克和女演员谭蒂·纽顿的家中。她来自伦敦西北部的肯萨尔高地。她有一个姐姐里普利(Ripley)和一个弟弟布克(Booker)。 帕克在蒂姆·伯顿2019年电影《小飞象》中首次亮相,饰演米莉