当前位置: 首页 > ai >正文

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

字节与二进制

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

数据类型范围

类型存储空间(单位:bit)数据范围
位/Bool1True 或 False
字节/Byte80 到 255
字节/SByte8-128 到 127
短整型/UShort160 到 65,535
短整型/Short16-32,768 到 32,767
整型/UInt320 到 4,294,967,295
整型/Int32-2,147,483,648 到 2,147,483,647
长整型/ULong640 到 18,446,744,073,709,551,615
长整型/Long64-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
单精度/Float32±1.5×10⁻⁴⁵ 到 ±3.4×10³⁸
双精度/Double64±5.0×10⁻³²⁴ 到 ±1.7×10³⁰⁸
字符串/String-无限

大小端字节序

什么是大小端

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

:::

  1. 大端字节顺序是指高位字节存储在低位地址,低位字节存储在高位地址。
地址变化趋势地址数据
低位

高位
0x000000000x11
0x000000010x22
0x000000020x33
0x000000030x44
  1. 小端字节顺序是指高位字节存储在高位地址,低位字节存储在高位地址。
地址变化趋势地址数据
低位

高位
0x000000000x44
0x000000010x33
0x000000020x22
0x000000030x11

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

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

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

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. 只需要使用浮点数或者整数,做一个测试即可快速确认。
http://www.xdnf.cn/news/19010.html

相关文章:

  • 0基础学智能体/工作流 从入门到精通(超详细课程)
  • Redis面试题--介绍下Redis几种集群模式
  • 序列容器(vector,deque,list)
  • 旧衣物回收小程序功能模块设计分析
  • 华为无线AC主备配置案例
  • CMake构建学习笔记22-libxml2库的构建
  • 不止于价格,DigitalOcean、AWS和Linode该选谁?
  • Vue3+TS+Element-Plus+el-tree创建树节点
  • 【2025 完美解决】Failed connect to github.com:443; Connection timed out
  • Charles打开后,Pc电脑端浏览器显示Not implemented或没有网络
  • 【计算机组成原理·信息】2数据①
  • 在 Go 项目的 DDD 分层架构中,Echo Web 框架及其 middleware 应该归属到哪一层?
  • LeetCode第二题知识点3 ----引用类型
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day15
  • OpenCV的轮廓检测
  • 神经语言学与脑科学启发的NLP深层分析:从统计拟合到机制理解的范式转变
  • 基于Spring Boot的短信平台平滑切换设计方案
  • 基于Matlab实现模糊综合评价程序
  • 使用 Java 替换和修改 PDF 文本的方法
  • c++标准模板库
  • 赋能你的应用:英超实时数据接入终极指南(API vs. WebSocket)
  • mongoDB学习(docker)
  • Bert学习笔记
  • HDFS 基本原理与操作流程
  • Python 【深度解析】线程与进程:操作系统中多任务的核心机制
  • 嵌入式第四十一天(数据库)
  • undefined和null
  • 【大模型14】Fine-tuning与大模型优化1
  • HunyuanVideo-Foley视频音效生成模型介绍与部署
  • 【完整源码+数据集+部署教程】胚胎发育阶段检测系统源码和数据集:改进yolo11-SCConv