大端、小端、网络字节序
来源:互联网 发布:淘宝上买cf王者靠谱吗 编辑:程序博客网 时间:2024/05/23 15:52
大端、小端、网络字节序
一、大端、小端
"大端"和"小端"表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节序;
或者说:
1.小端法(Little-Endian)就是低位字节排放在内存的低地址端(即该值的起始地址),高位字节排放在内存的高地址端;
2.大端法(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端;
举个简单的例子,对于整型数据0x12345678,它在大端法和小端法的系统中,各自的存放方式如下图1所示:
二、网络字节序
网络上传输的数据都是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它将这个字节作为高位字节还是低位字节处理,是一个比较有意义的问题;
UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待,这就要求发送端发送的第一个字节是高位字节;而在发送端发送数据时,发送的第一个字节是该数值在内存中的起始地址处对应的那个字节,也就是说,该数值在内存中的起始地址处对应的那个字节就是要发送的第一个高位字节(即:高位字节存放在低地址处);由此可见,多字节数值在发送之前,在内存中因该是以大端法存放的;
所以说,网络字节序是大端字节序;
比如,我们经过网络发送整型数值0x12345678时,在80X86平台中,它是以小端发存放的,在发送之前需要使用系统提供的字节序转换函数htonl()将其转换成大端法存放的数值;如下图2所示:
转自:http://bdxnote.blog.163.com/blog/static/8444235201091054458112/
- 大端 小端 主机 网络 字节序
- 大端、小端、网络字节序
- 大端、小端、网络字节序
- 大端、小端、网络字节序
- 大端、小端、网络字节序
- 大端小端 && 网络字节序
- 网络字节序 大端 小端
- 大端、小端、网络字节序
- 大端小端网络字节序
- 大端、小端、网络字节序
- 大端,小端,网络字节序总结
- 大端、小端、网络字节序
- 大端、小端与网络字节序
- 大端小端 && 网络字节序
- 大端小端 && 网络字节序
- 大端、小端、网络字节序
- 字节序:大端,小端与网络字节序
- 网络字节序、主机字节序、大端与小端
- 各种图像处理类库的比较及选择(The Comparison of Image Processing Libraries)
- 用python实现两个文件中的数据对比
- 说说我使用的乌班图麒麟ubantukylin14.04
- Cocoa Programming 手动界面---NSTextView (in NSScrollView)
- iOS 整合Settings.bundle显示版本信息
- 大端、小端、网络字节序
- 士大夫士大夫
- NumberPicker ——数字选择器
- webloic连接意外断开,导致应用异常
- Python数据库
- android界面切换的方法
- Nginx RTMP配置文件种HLS部分
- google、百度对比
- java小应用