【上位机数据转换】数据结构原理及大小端

字节与二进制

  1. 对于计算机来说,操作的最小单位是"比特位"。
  2. 对于开发者来说,操作的最小单位是"字节"。

数据类型范围

类型 存储空间(单位:bit) 数据范围
位/Bool 1 True 或 False
字节/Byte 8 0 到 255
字节/SByte 8 -128 到 127
短整型/UShort 16 0 到 65,535
短整型/Short 16 -32,768 到 32,767
整型/UInt 32 0 到 4,294,967,295
整型/Int 32 -2,147,483,648 到 2,147,483,647
长整型/ULong 64 0 到 18,446,744,073,709,551,615
长整型/Long 64 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
单精度/Float 32 ±1.5×10⁻⁴⁵ 到 ±3.4×10³⁸
双精度/Double 64 ±5.0×10⁻³²⁴ 到 ±1.7×10³⁰⁸
字符串/String - 无限

大小端字节序

什么是大小端

:::info
以32位处理器为例,存储数字0x11223344

:::

  1. 大端字节顺序是指高位字节存储在低位地址,低位字节存储在高位地址。
地址变化趋势 地址 数据
低位 ⬇ 高位 0x00000000 0x11
0x00000001 0x22
0x00000002 0x33
0x00000003 0x44
  1. 小端字节顺序是指高位字节存储在高位地址,低位字节存储在高位地址。
地址变化趋势 地址 数据
低位高位 0x00000000 0x44
0x00000001 0x33
0x00000002 0x22
0x00000003 0x11

数据转换为什么需要大小端

  1. "服务器"按照它们的大小端方式把数据转换成字节数组发送给我们。
  2. 我们必须要按照"服务器"的大小端字节顺序解析数据才能得到正确的数据。
  3. 大小端的本质就是一个字节的顺序。

如何使用C#代码来举例说明

csharp 复制代码
void test1()
{
    float data = 123.4f;

    // 按照本地大小端方式转换成字节数组
    byte[] value = BitConverter.GetBytes(data);
    Console.WriteLine("本机字节序数据:" + data.ToString());
    Console.WriteLine("本机字节序:" + StringLib.GetHexStringFromByteArray(value));

    // 逆转字节序
    byte[] value2 = new byte[value.Length];

    value2[0] = value[3];
    value2[1] = value[2];
    value2[2] = value[1];
    value2[3] = value[0];

    float result = BitConverter.ToSingle(value2, 0);
    Console.WriteLine("逆转字节序数据:" + result);
    Console.WriteLine("逆转字节序:" + StringLib.GetHexStringFromByteArray(value2));
}

// 运行输出
本机字节序数据:123.4
本机字节序:CD CC F6 42
逆转字节序数据:-4.298364E+08
逆转字节序:42 F6 CC CD

大小端几种形式

  1. ABCD
  2. BADC
  3. CDAB
  4. DCBA

怎么理解大小端

  1. 大小端只是一种字节序,对于一个已知的"服务器"来说,是一个固定值。
  2. 只需要使用浮点数或者整数,做一个测试即可快速确认。
相关推荐
Chance_to_win6 分钟前
数据结构之排序
数据结构
小年糕是糕手14 分钟前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
kupeThinkPoem40 分钟前
跳表有哪些算法?
数据结构·算法
前端小L1 小时前
图论专题(二十一):并查集的“工程应用”——拔线重连,修复「连通网络」
数据结构·算法·深度优先·图论·宽度优先
前端小L1 小时前
图论专题(二十三):并查集的“数据清洗”——解决复杂的「账户合并」
数据结构·算法·安全·深度优先·图论
啊董dong2 小时前
课后作业-2025年11月23号作业
数据结构·c++·算法·深度优先·noi
dlz08363 小时前
从架构到数据结构,到同步逻辑,到 show run 流程优化
数据结构
jllws13 小时前
数据结构_字符和汉字的编码与查找
数据结构
学困昇3 小时前
C++11中的包装器
开发语言·数据结构·c++·c++11
weixin_4577600012 小时前
Python 数据结构
数据结构·windows·python