金年会

每日经济新闻
要闻

每经网首页 > 要闻 > 正文

bigendian和littleendian-风行雪舞-博客园

陈腾云 2025-11-02 02:27:33

每经编辑|陈澄    

当地时间2025-11-02,mjwysadhwejkrbdsfjhbsdvf,慢脚下载入口

序曲:二(er)进制的初(chu)相见,字(zi)节的(de)归(gui)属(shu)问(wen)题(ti)

想象(xiang)一下(xia),您正在撰(zhuan)写(xie)一篇关于计(ji)算机(ji)网络的(de)小(xiao)说,其中(zhong)一个章节需要描(miao)述数(shu)据在(zai)网络上传(chuan)输的(de)过程(cheng)。您会(hui)如何(he)组织(zhi)您(nin)的(de)文字(zi)?是从第一(yi)个字(zi)开(kai)始,还是(shi)从(cong)最后一(yi)个字(zi)开始?这(zhe)看(kan)似简(jian)单的(de)问题,在计算机的(de)世(shi)界里(li)却是一个至关(guan)重(zhong)要(yao)且常常令(ling)人费(fei)解(jie)的技术(shu)难(nan)题:字节(jie)序(ByteOrder)。

在计算(suan)机(ji)内(nei)存中,数据是(shi)以字节(jie)(byte)为(wei)单(dan)位进(jin)行(xing)存(cun)储的(de)。一个字节(jie)通常(chang)由8个二(er)进(jin)制位(bit)组成(cheng)。当我们要(yao)存(cun)储一个超过(guo)一个(ge)字节的数据类型,比(bi)如一(yi)个32位(wei)的整(zheng)数(通常(chang)由(you)4个字(zi)节组成)时,问题(ti)就来(lai)了:这(zhe)4个字(zi)节,到底应(ying)该按(an)照什(shen)么样的(de)顺(shun)序排(pai)列在(zai)内存(cun)地址(zhi)里(li)呢?是最(zui)高有效字节(MostSignificantByte,MSB)在前,还是(shi)最(zui)低有(you)效(xiao)字节(jie)(LeastSignificantByte,LSB)在前?

就(jiu)像我(wo)们阅(yue)读书籍,有从左(zuo)到右,也(ye)有(you)从右(you)到左(zuo)的(de)阅读(du)习惯一(yi)样(yang),不(bu)同(tong)的(de)处理(li)器架构对数据(ju)在内(nei)存中的存储顺序有(you)着不同的(de)偏好。这种(zhong)偏(pian)好,就形(xing)成了(le)两种(zhong)截然(ran)不同(tong)的字(zi)节(jie)序:BigEndian(大端(duan)序)和(he)LittleEndian(小端(duan)序)。

BigEndian:庄(zhuang)重有(you)序(xu)的“大(da)家闺秀”

“BigEndian”这个名(ming)字(zi)本身就带有一(yi)种“大的在前(qian)面”的意(yi)味。在BigEndian体系(xi)中,数据的(de)最(zui)高(gao)有效字节(MSB)会(hui)被(bei)存储在内存中(zhong)最低的(de)地址上(shang),而最(zui)低(di)有效字(zi)节(LSB)则存储在最高(gao)的地(di)址上(shang)。您(nin)可以(yi)将其(qi)想象成我(wo)们阅读中文书(shu)籍的(de)习惯(guan),从第一(yi)个(ge)字开(kai)始,一(yi)路向后阅读。

例(li)如,一(yi)个16进(jin)制表示(shi)的32位整(zheng)数0x12345678。在(zai)BigEndian的内(nei)存布(bu)局(ju)中,它会被存储为(wei):

地址0x1000:0x12(MSB)地(di)址(zhi)0x1001:0x34地址0x1002:0x56地址(zhi)0x1003:0x78(LSB)

这种存储方式(shi),在一(yi)定程度上使(shi)得(de)数(shu)据(ju)的(de)读取和(he)理(li)解(jie)更加(jia)直观(guan),因为它与(yu)我们(men)通常阅读(du)数字(zi)的顺序是相(xiang)符(fu)的。很(hen)多网络协(xie)议(如(ru)TCP/IP协(xie)议栈)在设计时(shi)就采用了(le)BigEndian作为(wei)其(qi)标准(zhun)字节序,这(zhe)被(bei)称为“网(wang)络字(zi)节序(xu)”(NetworkByteOrder)。

这样(yang)做(zuo)的(de)好处是,在不同(tong)字节序的机器之间(jian)进行(xing)网(wang)络通信(xin)时(shi),可以通(tong)过统(tong)一的(de)转(zhuan)换(huan)规(gui)则(ze)来确(que)保数据的(de)正确(que)解(jie)析。这就(jiu)像大(da)家约(yue)定好,无论(lun)大家平时(shi)说话(hua)的语速快(kuai)慢,一到(dao)会议上(shang),都得(de)按照(zhao)规(gui)定(ding)流程来发言(yan),这(zhe)样(yang)才能保证(zheng)会(hui)议的(de)顺畅进行(xing)。

LittleEndian:灵活(huo)变通(tong)的“小(xiao)家碧玉”

与BigEndian的“大者在前”形(xing)成鲜明对比(bi)的是LittleEndian。在(zai)LittleEndian体系(xi)中(zhong),数据的(de)最低有效字节(jie)(LSB)被存(cun)储在(zai)内(nei)存(cun)中最(zui)低的地址(zhi)上(shang),而最高有效(xiao)字节(jie)(MSB)则存储(chu)在(zai)最高的地(di)址上(shang)。这就像我们有(you)时(shi)候(hou)会把一些(xie)重要(yao)的信息放(fang)在后面,或者按(an)照一种“反向”的(de)逻辑(ji)来(lai)排列。

同样(yang)是(shi)0x12345678这(zhe)个(ge)32位整数(shu),在LittleEndian的内存布(bu)局中(zhong),它会(hui)被(bei)存(cun)储为:

地(di)址(zhi)0x1000:0x78(LSB)地址(zhi)0x1001:0x56地址0x1002:0x34地址0x1003:0x12(MSB)

这种(zhong)存储(chu)方(fang)式,虽(sui)然(ran)初(chu)看起来(lai)有些(xie)“反直觉(jue)”,但在(zai)某(mou)些(xie)处(chu)理器架构(gou)(如x86系列的Intel和(he)AMD处理器(qi))的设计中(zhong),它能(neng)够带(dai)来一(yi)些(xie)性能上的(de)优势。例如(ru),当(dang)需(xu)要(yao)访问(wen)一个数据的低位(wei)字节时(shi),可以(yi)直接访问(wen)最(zui)低(di)地址(zhi),而(er)无需进(jin)行(xing)地址(zhi)偏(pian)移的计算。这(zhe)就(jiu)像在一个文件(jian)柜(gui)里,您最(zui)常(chang)用(yong)的文(wen)件总是放(fang)在最容(rong)易(yi)拿到(dao)的第(di)一(yi)层抽屉(ti)里,而不是(shi)藏在(zai)最里(li)面(mian),这样取(qu)用(yong)起来(lai)更(geng)快捷(jie)。

“风行雪舞(wu)”的起(qi)源:处理器(qi)架构(gou)的抉择

为什么(me)会有这(zhe)两种不同的(de)字节序呢(ne)?这(zhe)很大程(cheng)度上(shang)源于计算机(ji)处理器在(zai)设计(ji)之(zhi)初的(de)权衡与选(xuan)择。

早(zao)期的(de)处(chu)理(li)器设(she)计(ji),如摩托(tuo)罗拉的68000系列(lie)和(he)IBM的(de)PowerPC系(xi)列(lie),倾向于(yu)采用BigEndian。这(zhe)或(huo)许与(yu)它们(men)在(zai)某些领(ling)域的应用(yong)场景(jing)有关(guan),比如(ru)在网(wang)络通信和(he)某些高性(xing)能计(ji)算领(ling)域,BigEndian的直(zhi)观性更容易(yi)被(bei)接受。

而Intel的x86架构(gou),自其(qi)诞(dan)生以(yi)来就(jiu)一直(zhi)是(shi)LittleEndian的拥(yong)趸。这种(zhong)选(xuan)择(ze),在当(dang)时可能更多地是出(chu)于对(dui)硬(ying)件(jian)实现(xian)复杂度、成本以及性能的考量(liang)。随着x86架构(gou)在(zai)全球个人电(dian)脑市(shi)场的巨(ju)大成功(gong),LittleEndian也成为了更为(wei)普(pu)遍的字节序(xu)之(zhi)一,尤(you)其(qi)是在(zai)桌面和服(fu)务器(qi)领域(yu)。

这种“风行(xing)雪(xue)舞(wu)”的局面,就(jiu)此(ci)奠(dian)定。在不同(tong)的处理(li)器上(shang),我(wo)们(men)都(dou)能看(kan)到它们各自(zi)独(du)特的字节序(xu)“舞姿”。而对于开发者来(lai)说,理(li)解并(bing)处理(li)好这(zhe)两种(zhong)字(zi)节序,是(shi)编(bian)写跨(kua)平(ping)台、健壮程序的(de)基石。

在(zai)博客园(yuan)这样的技术(shu)社区(qu)中,“风(feng)行(xing)雪舞(wu)”这个(ge)词(ci),或(huo)许不(bu)仅(jin)仅(jin)是对字节(jie)序两(liang)种形(xing)态(tai)的(de)比喻(yu),更(geng)是对开发者在技(ji)术海洋中(zhong)不断(duan)探索(suo)、解决难(nan)题(ti),直至最(zui)终(zhong)掌握核心(xin)技术的(de)生(sheng)动写照。每(mei)一个问题(ti)的背后(hou),都(dou)可能(neng)隐藏(cang)着(zhe)一段关于(yu)选择(ze)、优(you)化和(he)创新(xin)的故事。而(er)我们(men),作为技术(shu)的(de)参与者,也正(zheng)是在(zai)这样的“风(feng)行雪(xue)舞”中(zhong),不断(duan)学(xue)习和成长。

part1到此结(jie)束(shu),接(jie)下(xia)来(lai)我(wo)们(men)将(jiang)进(jin)入(ru)part2,更(geng)深入(ru)地探讨这(zhe)两种字节序的(de)实际(ji)应(ying)用(yong)和(he)潜(qian)在的(de)挑(tiao)战(zhan)。

传承与(yu)碰撞:字节序(xu)在实(shi)际应(ying)用中(zhong)的(de)风行(xing)雪舞

上(shang)一(yi)部分,我(wo)们描绘了(le)BigEndian和(he)LittleEndian在二进(jin)制世(shi)界中(zhong)的基(ji)本(ben)形(xing)态,如同两种截(jie)然不同的(de)舞蹈(dao)风(feng)格,各自(zi)在处理器(qi)架构中占据(ju)一席之(zhi)地。技术世界并(bing)非(fei)孤岛(dao),数据的(de)流(liu)动与交换是常态(tai)。当这两种(zhong)“舞姿(zi)”在跨(kua)越不(bu)同平(ping)台的“舞(wu)池(chi)”中相(xiang)遇时,一场(chang)关于(yu)数据(ju)正确性的“风(feng)行(xing)雪舞”便正(zheng)式(shi)上演。

网(wang)络(luo)通(tong)信(xin)的“通用语言”:为(wei)什么需(xu)要网(wang)络字节(jie)序(xu)?

想象(xiang)一下,您用(yong)一台(tai)运行(xing)x86(LittleEndian)的电脑发(fa)送一封邮(you)件,而(er)接(jie)收(shou)邮件(jian)的(de)服务器(qi)运行(xing)着一个采(cai)用PowerPC(BigEndian)的(de)系统(tong)。如(ru)果发送(song)方直接将(jiang)内存(cun)中的(de)数(shu)据(ju)原封(feng)不动地发送(song)出(chu)去,接(jie)收方可能(neng)会因为误读字(zi)节顺(shun)序(xu)而导致(zhi)邮件内容(rong)混乱(luan)不堪,甚(shen)至无(wu)法(fa)解析。

为(wei)了(le)解决(jue)这(zhe)个(ge)问(wen)题,计算(suan)机网络协议设(she)计者(zhe)们引(yin)入了(le)“网络字节(jie)序(xu)”(NetworkByteOrder)的概念,并通(tong)常将(jiang)其(qi)定(ding)义(yi)为BigEndian。这意味着(zhe),当数据在(zai)网络上传输之(zhi)前,无论是BigEndian还是LittleEndian的机器,都(dou)需要将数(shu)据转(zhuan)换(huan)为网(wang)络字节序(xu);而在(zai)接收(shou)到(dao)数据(ju)之后(hou),再根据(ju)自(zi)身(shen)系(xi)统的字(zi)节(jie)序将(jiang)其(qi)转换回(hui)来。

在C语(yu)言中,提(ti)供了htons(hosttonetworkshort)、htonl(hosttonetworklong)、ntohs(networktohostshort)、ntohl(networktohostlong)等函(han)数来(lai)帮助开发者进(jin)行这(zhe)种字(zi)节序(xu)的转(zhuan)换(huan)。

htons:将主机(ji)字节序(xu)(HostByteOrder)的16位短(duan)整(zheng)型数据转换(huan)为(wei)网络(luo)字(zi)节序(xu)。htonl:将主(zhu)机字节(jie)序(xu)的32位长整(zheng)型数(shu)据转(zhuan)换为(wei)网络(luo)字(zi)节序。ntohs:将网络(luo)字节(jie)序的16位短(duan)整型(xing)数(shu)据(ju)转换(huan)为(wei)主机(ji)字(zi)节(jie)序(xu)。ntohl:将网络字节序(xu)的(de)32位长整(zheng)型数(shu)据转换为主机(ji)字节序(xu)。

这(zhe)里的(de)“主机字(zi)节(jie)序”就(jiu)是指(zhi)当前机器所使用的字节(jie)序(可能(neng)是BigEndian,也可(ke)能是(shi)LittleEndian)。通过(guo)这些(xie)函数(shu),不(bu)同(tong)字节(jie)序的机(ji)器就能(neng)够像(xiang)使用同一(yi)种(zhong)“通(tong)用语(yu)言”一(yi)样,顺(shun)畅(chang)地进行数据(ju)交流(liu),确保网络通信(xin)的可靠性。这如同(tong)在(zai)国际(ji)会议上,大(da)家都会先(xian)将各(ge)自(zi)的(de)语言翻译(yi)成英语(yu),再进行(xing)交流,避免了语(yu)言不通造成的(de)隔阂。

嵌入式系(xi)统与低功(gong)耗(hao)的(de)“秘密武器”

在嵌(qian)入式系(xi)统领域,LittleEndian同样(yang)扮演(yan)着重(zhong)要的(de)角色。许多广泛使用(yong)的(de)微(wei)控制器,如ARMCortex-M系列(lie)(在很(hen)多智能设(she)备、物联(lian)网设备中非(fei)常常(chang)见(jian)),默(mo)认支持LittleEndian字节序(xu)。

LittleEndian在嵌(qian)入式系统(tong)中的受欢迎,与(yu)其在(zai)某些(xie)操作(zuo)上的效率(lv)优势息息(xi)相(xiang)关(guan)。例(li)如(ru),当我(wo)们(men)需要(yao)访(fang)问(wen)一(yi)个(ge)多字节(jie)整数的最(zui)低字(zi)节时,LittleEndian架构可以直接通(tong)过(guo)最低(di)的内存地址(zhi)访(fang)问(wen),而无需(xu)进行(xing)额(e)外(wai)的地址计(ji)算。这对于(yu)资源(yuan)受限(xian)、对(dui)功耗和(he)处理速(su)度(du)有极(ji)高(gao)要求的(de)嵌入(ru)式(shi)设(she)备来(lai)说,每(mei)一个(ge)微(wei)小的优(you)化都至(zhi)关重(zhong)要(yao)。

在嵌入式(shi)开发(fa)中,数(shu)据的持久(jiu)化存储(例如存(cun)储到(dao)闪(shan)存(cun)或EEPROM中(zhong))也需要考虑字(zi)节序(xu)问题(ti)。如(ru)果一个嵌(qian)入式设(she)备(bei)需要(yao)与(yu)其他系统交(jiao)换(huan)数据(ju),或者(zhe)其存(cun)储(chu)的数据(ju)需要(yao)在(zai)不同类(lei)型的设备(bei)上被读取,那么(me)明确(que)定(ding)义和处(chu)理(li)数(shu)据的字节(jie)序(xu)就变得(de)尤为重要(yao)。

跨(kua)平(ping)台开(kai)发(fa)的“潜(qian)在陷(xian)阱”

尽管现(xian)代(dai)操(cao)作(zuo)系(xi)统和(he)编程语言在(zai)一定(ding)程(cheng)度(du)上封装(zhuang)了(le)字节(jie)序的(de)细节,但对(dui)于开(kai)发者(zhe)来说(shuo),理解字节(jie)序仍(reng)然(ran)是(shi)编写(xie)健(jian)壮(zhuang)、跨(kua)平台代(dai)码的(de)关键。尤(you)其是在以下场景(jing),开发(fa)者需要格(ge)外小(xiao)心:

文(wen)件I/O:当读写(xie)二进制(zhi)文(wen)件(jian)时(shi),如果文(wen)件(jian)以(yi)特(te)定(ding)的字(zi)节序创建,而(er)读取程(cheng)序(xu)使用(yong)的字节序不同(tong),就会(hui)导致(zhi)数据解析错(cuo)误。例如(ru),一(yi)个在LittleEndian系(xi)统上生成(cheng)的(de)配置文(wen)件,如果被(bei)BigEndian系统读取(qu),其中(zhong)的数值(zhi)可(ke)能就(jiu)完全错(cuo)了(le)。

内存(cun)映射(she)(MemoryMapping):当将(jiang)文(wen)件(jian)或设备内(nei)存(cun)映(ying)射(she)到(dao)进程(cheng)地址(zhi)空间时,如果(guo)涉(she)及到不(bu)同(tong)字节(jie)序(xu)的系统(tong),需要(yao)确保(bao)映射的数(shu)据被正确解释。序(xu)列化(hua)与(yu)反序(xu)列化:在网络通(tong)信、分(fen)布式系统(tong)或(huo)持(chi)久化存储(chu)中,数据的序列(lie)化(hua)(将内存(cun)中的(de)数据(ju)结构(gou)转换为可传输或可(ke)存储(chu)的格式(shi))和(he)反序列化(反之(zhi))过程(cheng),都(dou)需(xu)要明(ming)确的字(zi)节(jie)序处(chu)理。

“风(feng)行雪舞”的(de)未来(lai):趋同(tong)与共存

在(zai)技术(shu)发展(zhan)的长河(he)中(zhong),我(wo)们(men)可以看到(dao)一种(zhong)有趣的(de)趋势:虽(sui)然BigEndian和(he)LittleEndian各(ge)有(you)优势(shi),但为了(le)兼(jian)容性(xing)和便(bian)利(li)性,许多处理(li)器(qi)和(he)系统(tong)都增(zeng)加了对两(liang)种字节序的支(zhi)持。例如,一些ARM处(chu)理器(qi)可以配置(zhi)为BigEndian或LittleEndian工作(zuo)模式(shi)。

这(zhe)种“趋同(tong)”的趋(qu)势,使得开(kai)发者在选择平台(tai)时(shi)拥有了更大的(de)灵活性(xing)。正(zheng)如“风(feng)行(xing)雪(xue)舞(wu)”所(suo)展现(xian)的那样,即(ji)使(shi)在(zai)趋同的(de)背(bei)景下(xia),理解这(zhe)两种截(jie)然不(bu)同(tong)的“舞姿(zi)”及其(qi)背(bei)后的逻辑,依然是每一(yi)位(wei)深入探(tan)索计算机科学的“舞(wu)者”所必须(xu)掌(zhang)握(wo)的技能(neng)。

在(zai)博客园,我们看(kan)到(dao)的(de)“风行雪舞”,不仅(jin)仅是对技术概念的生动比喻(yu),更是(shi)对开发者(zhe)们在学习、实践(jian)、解决(jue)技(ji)术难题(ti)过程(cheng)中所(suo)展现(xian)出的(de)智慧(hui)与(yu)坚(jian)持的赞扬(yang)。每一(yi)次对(dui)字节(jie)序的深入理(li)解,每一(yi)次对跨(kua)平(ping)台问题的有(you)效解决(jue),都(dou)像是(shi)这场“风(feng)行(xing)雪(xue)舞”中一次(ci)成(cheng)功(gong)的旋(xuan)转和(he)跳跃(yue),为我们的(de)技术之(zhi)路(lu)增(zeng)添(tian)了更(geng)多(duo)的色彩与可能。

无(wu)论是(shi)BigEndian的一(yi)丝(si)不苟,还(hai)是LittleEndian的灵活高效(xiao),它们(men)都在各自(zi)的领域(yu)里,以独(du)特的(de)方(fang)式(shi),参与(yu)着这(zhe)场永(yong)不停(ting)歇的(de)“字节舞(wu)”,共(gong)同构成了我们(men)今天(tian)所见的丰(feng)富多(duo)彩(cai)的数字(zi)世(shi)界(jie)。而(er)我们,作(zuo)为这场(chang)舞(wu)蹈的(de)观察(cha)者与(yu)参与(yu)者,正是(shi)在不断(duan)学习(xi)和探索(suo)中(zhong),领(ling)略这场(chang)“风行(xing)雪舞”的(de)无穷魅力。

2025-11-02,架起校花玉腿白丝疯狂输出的视频,这个指标突破十年新高,行情还有多少空间?

1.原神黄化视频,比亚迪汉智驾版开启 OTA 升级推送:新增手车互联等 6 项功能私立女校的挑战安卓像素桃子移植,传统业务增长乏力 上市期货公司发力资管与海外业务

图片来源:每经记者 阿布·瑞恩烈士 摄

2.馃崙馃崋馃サ馃敒+藏匿在健身房的猥琐男艾秋在线观看,何旭琼,百川短剧CEO,出任小鱼盈通行政总裁

3.以前日过的女人几年以后见面 45岁左右+911免费行情网站电视,大明第14次入选“中国民营企业500强”

日本在线观看视频+徐媛参加直播idol我火了宁厌,ST纳川上半年实现营业收入3553.78万元

(7分钟科普下)《回乡下叔叔家被轮流欺负是哪一集》_Blibli

封面图片来源:图片来源:每经记者 名称 摄

如需转载请与《每日经济新闻》报社联系。
未经《每日经济新闻》报社授权,严禁转载或镜像,违者必究。

读者热线:4008890008

特别提醒:如果我们使用了您的图片,请作者与本站联系索取稿酬。如您不希望作品出现在本站,可联系金年会要求撤下您的作品。

欢迎关注每日经济新闻APP

每经经济新闻官方APP

0

0

Sitemap