网络字节序之理解
来源:互联网 发布:org.apache.tools pom 编辑:程序博客网 时间:2024/06/09 19:58
1.字节
字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
例如,一部电影内存是3G个字节(3GB),一首歌是3M个字节(3MB)。
2.字节序
我们常常采用多个字节来存储信息。比如,这里我们存储两个整数共占4个字节,其用十六进制来表示(0x11223344和0x55667788)。通常常用的两种存储方式:
把数据的高位存在低地址:
0x11
0x22
0x33
0x44
0x55
0x66
0x77
0x88
把数据的低位存在低地址:
0x44
0x33
0x22
0x11
0x88
0x77
0x66
0x55
前者使用的是“大端(Big endian)”字节序,即先存高位的那一端(两个数字的最高位分别是0x12、0x11),如上图中的第二个图;后者使用的是“小端(Little endian)”字节序,即先存低位的那一端(两个数字的最低位分别是0x78、0x44),如上图中的第一个图;
不同厂商差异:
· x86,MOS Technology 6502,Z80,VAX,PDP-11等处理器为小端。
· Motorola6800,Motorola 68000,PowerPC 970,System/370,SPARC(除V9外)等处理器为大端。
· ARM,PowerPC (除PowerPC 970外), DEC Alpha, SPARC V9,MIPS, PA-RISC and IA64的字节序是可配置的。
3.网络字节序
我们把计算机本身采用的不管是大端或者小端的存储数据的方式,称为主机字节序。这里计算机自身采用的字节序没有任何问题,但涉及不同的计算机进行通信时,必须统一标准。
TCP/IP协议中RFC1700规定使用“大端”字节序为网络字节序,其他不使用大端的计算机发送数据的时候必须要将自己的主机字节序转换为网络字节序(即“大端”字节序),接收到的数据再转换为自己的主机字节序。这样就与CPU、操作系统无关了,实现了网络通信的标准化。
- 网络字节序之理解
- 网络IPC之字节序
- 两个例子理解主机字节序和网络字节序,不同平台字节序转换
- 网络学习[1]--字节序(大小端)理解
- 顶级c程序员之路 选学篇-1 深入理解字节,字节序与字节对齐
- 网络字节序和本地字节序的理解和实现
- 网络通信之 字节序转换原理与网络字节序、大端和小端模式
- 网络通信之 字节序转换原理与网络字节序、大端和小端模式
- 网络通信之 字节序转换原理与网络字节序、大端和小端模式
- linux网络编程之网络字节序、主机字节序、大端、小端
- 我的网络编程学习之路——主机字节序和网络字节序
- 网络通信之 字节序转换原理与网络字节序、大端和小端模式
- 字节序理解
- 理解字节序
- 理解字节序
- 理解字节序
- 理解字节序
- 理解字节序
- 体会建造者模式Builder
- greenplum数据库引擎探究
- Encoding
- request和response的相关
- Fio安装、测试,Gfio图形化测试I/O读写性能
- 网络字节序之理解
- Android中自定义View的状态保存
- hrbust 1339 Touring【最短路+思维】
- xilinx 约束文件
- Android微信支付集成
- 超酷MWC四轴飞行器DIY全套教程
- Docker日志收集-splunk
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- EXCEL 替换内容