网站代码审计,大数据营销的案例,wordpress主题更改首页,欧米伽男士手表官方网站目录 一、字节序1.字节序概念2.字节序的理解#xff08;1#xff09;大端模式存储数据#xff08;2#xff09;小端模式存储数据 二、网络字节序 一、字节序
1.字节序概念
字节序#xff1a;内存中存储多字节数据的顺序。
难道存储数据还要看顺序吗#xff1f; yes。内… 目录 一、字节序1.字节序概念2.字节序的理解1大端模式存储数据2小端模式存储数据 二、网络字节序 一、字节序
1.字节序概念
字节序内存中存储多字节数据的顺序。
难道存储数据还要看顺序吗 yes。内存是按照字节编址与存取的每个字节都有自己的地址。在存取单字节数据时不需要考虑顺序因为直接取一个字节就好了。 但存储多字节数据时需要考虑数据的存储顺序因为不同的cpu架构的存储顺序不同因此这里需要知道字节序的分类以及每一类的特点。数据存储时从低地址到高地址存储数据读取时从低地址到高地址读取
字节序分类
大端模式大端字节序内存的低地址空间存储数据的高位即低地址存高位。小端模式小端字节序内存的低地址空间存储数据的低位即低地址存低位。
2.字节序的理解 比如这里有一个int 型整数 1int型占据4个字节也就是32个比特位大小的内存空间它的二进制形式是
0000 0000 0000 0000 0000 0000 0000 0001 它的十六进制形式是
0x 00 00 00 01 如图所示是十六进制的表示形式注意区分高位和低位。 1大端模式存储数据 在大端模式中整型1是如何存储的以32位为例 1按照大端模式下低地址存高位低地址会存储00而这四个字节中的最高地址存储01。 2在系统读取这个整型数据时就会一次性读取出4个字节然后按照大端模式对数据进行解读得到正确的数据序列。
2小端模式存储数据 小端模式中整型1是如何存储的以32位为例 1按照小端模式低地址存低位四字节的最低地址存储01四字节的最高地址存储00。 2在系统读取这个整型时就会一次性读取4个字节按照小端模式解释数据得到正确序列。 二、网络字节序 1网络通信就是两端主机之间进行数据传输两端主机使用的字节序不一定是相同的这样就会造成数据错乱的情况。 2如果是两台主机之间进行通信主机A是大端模式主机B是小端模式。主机A如果要发送一个整型变量1给主机B发送数据时数据肯定都是从低地址开始发送的接收端存储接收的数据时也是从低地址开始存储数据的。但这样就有了很严重的问题。 3看看主机A的发送顺序从低地址到高地址开始发送第一个字节发送00第二个字节发送00第三个字节发送00第四个字节发送01。 4来看看主机B的接收和存储顺序接受顺序就是主机A的发送顺序存储时也是按地址从小到大存储的。主机B的低地址存储00高位存01。 5在主机B读取数据时就会出错了因为主机B是用低地址来存储低位的。主机B如果要读取这个数据就会一次性读取出来4个字节然后按照主机B的字节序进行数据解析主机B是小端。然后就出现问题了按照小端模式对数据进行解析后得到的数据是这样的0x 01 00 00 00。完犊子了直接从1变成了一个很大的数据这意味着数据会出现二义性。 6上面这个过程如果用一个通俗的例子来说就是主机A说的是汉语结果主机B把汉语当成英语进行理解那肯定会出错啊。 7这样的问题是很严重的因此网络通信中要求全都使用网络字节序而网络字节序是大端字节序。