对于多字节的数字类型,有高位字节在前还是低位字节在前的区别,在TCP/IP中,
好象是规定一律高位字节在前,而Intel 80x86 CPU规定是低位字节在前
首先是字与双字在各种系统中内部存储的方式的不同,在Windows中字与双字是高位在低地址排列的,
而网络传输的标准是低位在低地址排列,比如一个十进制数字4660在Windows系统中存储成3412h,
而在网络上表示是1234h。所以我们在设置或读取协议首部中有关用字或双字表示(一般象TCP中的
端口、序号,而IP地址则不是)的字段时要切记转换他们的排列顺序
网络字节序是一种为方便网络上面数据的交互保证一致性而规则的一种字节序。
但是主机字节序是与CPU有关系的,比如x86/x64系列的主机字节序与网络字节序
就是逆序的。但是不要把所有主机的主机字节序都理解为与x86/x64一样。其
他很多CPU体系的字节序与网络字节序是一致的,也就是说在这些主机当中完
全可以不考虑主机字节序和网络字节序。
字节序,主要是有多个字节的数据类型,包括短整形(双字节)、整形(长整形,
四字节)、单精度浮点型(四字节)、长长整形(64位整形,八字节)、双精度
浮点形(八字节)等,在存取(读入到寄存器)高低位的顺序。
好象是规定一律高位字节在前,而Intel 80x86 CPU规定是低位字节在前
首先是字与双字在各种系统中内部存储的方式的不同,在Windows中字与双字是高位在低地址排列的,
而网络传输的标准是低位在低地址排列,比如一个十进制数字4660在Windows系统中存储成3412h,
而在网络上表示是1234h。所以我们在设置或读取协议首部中有关用字或双字表示(一般象TCP中的
端口、序号,而IP地址则不是)的字段时要切记转换他们的排列顺序
网络字节序是一种为方便网络上面数据的交互保证一致性而规则的一种字节序。
但是主机字节序是与CPU有关系的,比如x86/x64系列的主机字节序与网络字节序
就是逆序的。但是不要把所有主机的主机字节序都理解为与x86/x64一样。其
他很多CPU体系的字节序与网络字节序是一致的,也就是说在这些主机当中完
全可以不考虑主机字节序和网络字节序。
字节序,主要是有多个字节的数据类型,包括短整形(双字节)、整形(长整形,
四字节)、单精度浮点型(四字节)、长长整形(64位整形,八字节)、双精度
浮点形(八字节)等,在存取(读入到寄存器)高低位的顺序。
本文探讨了网络字节序与主机字节序的区别,特别是在TCP/IP协议中高位字节在前的规定及其与Intel CPU低位字节在前的差异。讨论了不同系统中字与双字的存储方式,并强调了在网络传输中正确转换字节序的重要性。
170

被折叠的 条评论
为什么被折叠?



