C语言网络编程之--字节顺序


字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,各个数据类型在内存中的字节长度可以用sizeof(类型关键字)获得。那么字符是如何存放到内存中的呢?
 
计算机存储字符有两种顺序:高位字节优先和地位字节优先。那如何理解“高位”字节和“地位”字节呢?我们来看一个数值0x1234在内存的存储方式:

地址 地址1 地址2 地址3 地址4
高位字节优先 4 3 2 1
低位字节优先 1 2 3 4

由于一个内存地址是1个字节的大小,即地址1、地址2、地址3、地址4的大小都是1个字节。假设数值0x1234中的“1”、“2”、“3”、“4”字符都占用一个字节的长度,那么就有如下存储顺序:

低位字节优先:假设申请到的地址的编号是从1--4这样编号的,于是,地址1就是低位字节,地址4就是高位字节。根据低位字节优先存储的顺序,数值0x1234中的字符“1”就先进入地址1,然后字符“2”就进入地址2……最后地址4接收最后一个字符“4”。

高位字节优先:假设申请到的地址编号是从1--4这样编号的,于是,地址1是低位字节,地址4是高位字节。高位字节优先就是先存满高位字节再考虑低位字节。数值0x1234中的字符“1”就先进入地址4,然后字符“2”就进入地址3……最后,地址1接收最后一个字符“4”。

一般来说,Internet上的数据使用的是高位字节优先,基于x86的PC机上的数据是低位字节优先。所以,使用了基于x86上的数据要通过Internet传输,就要将数据转换成高位字节优先的顺序。有时候,高位字节优先顺序也称为网络字节顺序,低位字节优先顺序也称为主机字节顺序。

 

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容