字节顺序

✍ dations ◷ 2025-11-18 11:01:34 #字节顺序

字节顺序,又称端序或尾序(英语: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用于网络序转换到本机序。

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

相关

  • 张仃张仃(1917年5月19日-2010年2月21日),号它山,男,辽宁黑山人,中国现代艺术家、教育家、清华大学教授、原中央工艺美术学院院长,中国人民政治协商会议会徽的设计者,中华人民共和国国徽设
  • 多枝柽柳多枝柽柳(学名:),又名红柳,为柽柳科柽柳属下的一个种,温带及亚热带树种,为常见灌木。通常可生长到1-5米高,根系发达,最深可达10余米。枝条细瘦,红棕色;叶披针形,长2-5厘米,总状花序密生在
  • 平潭县平潭县(闽东语福州话:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium
  • 罗萨莉娅·德·卡斯特罗罗萨莉娅·德·卡斯特罗(加利西亚语:María Rosalía Rita de Castro,加利西亚语读音:)(1837年-1885年),加利西亚浪漫主义作家与诗人。她被视为加利西亚浪漫主义的重要人物。她的诗特
  • 夏雨田夏雨田(1938年2月-2004年7月30日),男,祖籍河北,生于北京,中国曲艺剧作家、演员。其艺术生涯主要在武汉度过,曾任中国曲艺家协会副主席、湖北省文联副主席、省曲协、武汉市文联主席、
  • 罗殿龙罗殿龙(1952年5月-),男,壮族,广西贵港人,中华人民共和国政治人物、第十二届全国人民代表大会广西地区代表。毕业于中央党校法学理论专业。1974年3月加入中国共产党。2008年1月至2016年1月任广西壮族自治区高级人民法院院长。2008年起担任全国人大代表。2013年,担任全国人大代表。
  • 奥斯塔公国奥斯塔公国,即原奥斯塔伯国,是11世纪至18世纪萨伏依王朝统治下的国家,现为意大利的一部分。“奥斯塔公爵”的头衔一直被授予萨瓦君主的的第二个儿子。
  • 威廉·汉密尔顿 (外交官)威廉·汉密尔顿爵士(英语:Sir William Hamilton,1730年12月13日-1803年4月6日)是一位英国外交官、考古学家、收藏家和火山学家,曾任英国国会议员,因对埃特纳火山和维苏威火山的研究而当选英国皇家学会会士和获得科普利奖章,主要作品有四卷本的《伊特鲁里亚、希腊和罗马古物藏品目录》()等。
  • 王占柱王占柱(1957年-),黑龙江泰康人,蒙古族,中华人民共和国政治人物。毕业于中央党校函授学院经济管理专业,加入中国共产党,2006年起担任沈阳铁路局局长。2008年起担任全国人大代表。2013年,被选为全国人大代表。2016年8月24日,因在辽宁拉票贿选案中涉嫌拉票贿选,被免去全国人大代表资格,同时辞去辽宁省第十二届人民代表大会代表职务;8月31日被中国铁路总公司停职,沈阳铁路局局长职务临时由原哈尔滨铁路局局长张海涛代替。
  • 安东诺夫安-24安东诺夫安-24(乌克兰语:Антонов Ан-24,北约命名:焦炭(Coke))是一款在苏联时代由安东诺夫设计局开发的44座双涡桨发动机动力客运与货运用飞机。在1959年时进行首航的安-24是一款生产数超过千架的量产机种,并被独联体与非洲国家广泛采用。安-24于1957年开始设计。赤道几内亚、古巴、前苏联、中国、北韩1969年12月29日至1985年,中国购进23架安-24。1966年开始由西安飞机制造厂仿制设计,1970年运-7首飞,1982年国家批准设计定型后转入小批生产。1972年2月,民航广州