大端法、小端法、网络字节序
来源:互联网 发布:安卓程序员用mac好吗 编辑:程序博客网 时间:2024/05/25 19:56
也可以说:
1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。
2.大端法(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。
举个简单的例子,对于整形0x12345678。它在大端法和小端法的系统内中,分别如图1所示的方式存放。
我们知道网络上的数据流是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它是将这个字节作为高位还是低位来处理呢?
网络字节序定义:收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节应当是高位。而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址对应的字节。可见多字节数值在发送前,在内存中数值应该以大端法存放。
网络字节序说是大端字节序。
比如我们经过网络发送0x12345678这个整形,在80X86平台中,它是以小端法存放的,在发送前需要使用系统提供的htonl将其转换成大端法存放,如图2所示。
在80X86CPU平台上,执行该程序得到如下结果:
[0]:0x78
[1]:0x56
[2]:0x34
[3]:0x12
[0]:0x12
[1]:0x34
[2]:0x56
[3]:0x78
分析结果,在80X86平台上,系统将多字节中的低位存储在变量起始地址,使用小端法。htonl将i_num转换成网络字节序,可见网络字节序是大端法。
总结点:80X86使用小端法,网络字节序使用大端法。
今天在网上看到一篇关于htonl()函数的解释,感觉有道理,贴过来大家一起学习!
htonl就是把本机字节顺序转化为网络字节顺序
h---host 本地主机
to 就是to 了
n ---net 网络的意思
l 是 unsigned long
与此类似的是htons()
s是unsigned short
所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中)。但是计算机的内存存储数据时有可能是大尾顺序或者小尾顺序。
先举个例子:int a = 0x403214;
int b = htonl(a);
我在VC++6.0调试这段代码,发现
&a的值为:0x0012ff44
其中0x0012ff44、0x0012ff45、0x0012ff46、0x0012ff47这四个单元的值依次为:14、32、40、00,即0x403214这个数的高位部分存放在高位地址中,低位部分存放在低位地址中,即小尾顺序。
&b的值为:0x0012ff40
其中0x0012ff40、0x0012ff41、0x0012ff42、0x0012ff43这四个单元的值依次为:00、40、32、14,即把原数0x403214的高位部分存放在低位地址中,低位部分存放在高位地址中。
由此可见,如果一个数以小尾顺序存储,经htonl函数调用后这个数的高地位字节会完全颠倒过来成为一个新的数。这个新的数在机器内部其实还是以小尾顺序存储的,但是相对于原来的数而言相当于是变成大尾顺序的了。
long型的0x40写完整为:0x 00 00 00 40,共四个字节,调用htonl后四个字节颠倒顺序,为0x 40 00 00 00。
同样,0x40 00 00 00调用htonl后变为0x 00 00 00 40,即0x40
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序 转
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序 转
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序 转
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序 转
- 大端法、小端法、网络字节序
- 大端法,小端法,网络字节序
- 大端法、小端法、网络字节序
- 大端法、小端法、网络字节序
- Android-Linkify的使用
- iOS开发:调用指纹传感器
- 习题8-11 UVA - 1615 Highway 高速公路 (区间枚举)
- 安卓中黑客
- XMLHTTP.readyState的五种状态
- 大端法、小端法、网络字节序
- Android BT STACK BTU 和 HCI之间的消息传递
- Spring中资源文件
- c语言学习笔记46
- 第一节 PE文件格式
- Linux系统性能监控
- 树莓派无法上网
- Celery最佳实践
- 【bzoj4213】【贪吃蛇】【有上下界的费用流】