以前,经常遇到大字节序、小字节序、网络字节序、字节序、主机字节序等概念经常被记住和忘记。 使用的时候查一下很花时间,结果是因为不完全理解。 这次试着把它记录下来吧。 完全理解这个吧。
我查了一下网上的资料,果然不可信。 于是,我查了多本书,拍了截图。 便于以后查阅和复习。 如果有侵权的话,请联系我立即删除。
前言:我个人认为应该分为存储器中的大小方和网络中的大小方。 当然这是我个人的理解,还不一定正确,需要验证。
一.记忆中的大端和小端摘录《ARM体系结构与编程》
二.摘录存储中的大端和小端和网络中的大小端《UNIX网络编程卷1:套接字联网API (第三版)》
对于由2个字节组成的16位整数,有两种方法可以将这2个字节存储在内存中。 一种方法是将低位字节存储在起始地址中,称为小字节序。 另一种方法是将称为大字节序的高位字节存储在起始地址中。
图3-9的上部显示内存地址的增加方向为从右到左,下部显示内存地址的增加方向为从左到右。 它还指示最高有效位(most significant bit,MSB )是该16位值的最左比特,最低有效位(least significant bit,LSB )是该16位值的最右比特
术语“小端序”和“大端序”指示多个字节值的哪个末端(小端序或大端序)存储在该值的开头地址中。
这两种字节序都没有标准的,系统都在使用。 一个系统使用的字节序称为主机字节序,可以通过以下程序输出主机字节序: 在短整数变量中存储2字节的值0x0102,查看上面的地址a对应的连续字节c[0]和上面的地址A 1对应的c[1],确定字节顺序。
三、网上大小端摘自《TCP/IP详解 卷1:协议》
四、摘录其他博客:博客在网上传输的数据都是字节流,对于一个多字节的数值,在进行网络传输时,先传输哪些字节? 即,在接收端接收到第一个字节时,将该字节作为高位字节还是低位字节是有意义的问题:
UDP/TCP/IP协议规定:将接收的第一个字节作为高位字节处理,要求发送方发送的第一个字节为高位字节。 发送方发送数据时,发送的第一个字节是其数值与存储器内的起始地址对应的字节,也就是说,发送该数值与存储器内的起始地址对应的字节的第一个高位字节
因此,网络的字节序是大字节序,一些系统的本机字节序是小字节序,一些是大字节序,为了确保传输顺序的一致性,互联网协议是大字节序
这是符合CC 4.0 BY-SA版权协议的其他博客的原创文章。 请附上原文出处的链接和本声明。
本文链接: https://blog.csdn.net/jmw 1407/article/details/108637540
二、在电脑上,关于地址的说明,很少使用“大”和“小”这样的表达; 相对应地,多使用“高”和“低”; 遗憾的是,这个术语照字义翻译就是“大端”和“小端”,难怪会让人迷惑。
但是,给我的启示是,在帅气的懒汉翻译的《程序设计实践》中,这个术语不是翻译成“大端”和小端,而是翻译成“高尾端”和“低尾端”。 这个很容易理解。 例如,11223344是" 11223344 ",末尾是"0"。
“高/低尾端”比“大/小端”更难迷路。 但根据个人经验,在市面上的书籍和网上各种资料中,遗憾的是,前者已经很少见,多见的是后者。 幸运的是,这两组形容词中,正好“高”和“大”对应,“低”和“小”对应。 既然高尾端对应大端,低尾端对应小端,那么坚实的樱桃中就可以看到大端和小端这两个术语,在大脑中可以把它们转换成高尾端和低尾端。 此时,根据前面的理解,不用想起来,只要考虑高低字面的意思,就能想起它们的意思。 但奇怪的是,同样由帅气的懒汉翻译的《编程原本》(elementsofprogramming )将big-endian翻译成了大尾格式(第一章)。
版权声明:这一段是其他博客的原创文章。 转载请向原博主咨询。
链接: https://www.cn blogs.com/isandywu/p/10788990.html
博客的小字节序位于低位(低位字节存在内存行地址,字节的高低顺序和内存的高低顺序相同),大字节序位于高位。 (其中,“之前”与存储器行地址接近,存储在硬盘中意味着先写入该字节。)。 在概念上,字节序也称为主机顺序。
链接: https://blog.csdn.net/Anning ZTE/article/details/52125665
博客四(如果LSByte在MSByte之前,即LSB是低地址,则其字节顺序是小端序(; 反之为大端序
链接:https://social.technet.microsoft.com/Forums/en-US/471e01d4-2614-441c-b068-39259368998f?forum=1761
总结根据以上看哪种方式适合方便你记忆,选择一种即可,根据《UNIX网络编程卷1》中的术语我认为可以这样记:
起始地址存储大端(即高字节)就是大端
起始地址存储小端(即低字节)就是小端
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
c) 网络字节序:TCP/IP各层协议将字节序定义为大端(Big-Endian),因此TCP/IP协议中使用的字节序通常称之为网络字节序。
有些书籍或文章中称低位字节、低字节、低有效位、最低有效位、低位都是一个意思,都是指是低字节。
同理高位字节、高字节、高有效位、最高有效位、高位都是一个意思,都是指是高字节。