首页 > 其他分享 >网络字节序与主机字节序的转换函数实践

网络字节序与主机字节序的转换函数实践

时间:2022-10-08 21:35:37浏览次数:46  
标签:小端 存储 字节 主机 网络 大端 函数

什么是字节序?

字节序,顾名思义,就是字节组织的顺序。我们可以将其根据其存储时从低位开始还是从高位开始分为两种,具体如下:

类型 简写 本质
大端 BE(big endian) 将高序字节存储在起始地址
小端 LE(little endian) 将低序字节存储在起始地址

这就是大小端序的含义,两者除了顺序上没有其他的区别,在性能上、功能上都是一样的。

举个例子,0x1234567,这个是一个十六进制的整数,储存它需要至少四个字节。
如果从0x100开始储存0x1234567这个数,存储结构如下图:

地址 0x100 0x101 0x102 0x103
大端 01 23 45 67
小端 67 45 23 01

 

为什么要有大端字节序和小端字节序?

计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的,所以计算机的内部处理大都是小端字节序。

但是,人类还是习惯大端字节序。所以,除了计算机的内部处理,其他场合几乎都是大端字节序,比如网络传输和文件储存等。

主机字节序和网络字节序

前面说的字节序其实是指主机字节序,即主机字节序既包括小端字节序,又包括大端字节序。它与具体的CPU类型、操作系统类型等有关,就像前面的表格列出的。

网络字节序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而保证数据在不同主机之间传输时能够被正确解释。

网络字节序采用大端字节序。

标签:小端,存储,字节,主机,网络,大端,函数
From: https://www.cnblogs.com/cdh55/p/16770264.html

相关文章