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

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

字节与二进制

  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.dtcms.com/a/357394.html

相关文章:

  • 《WINDOWS 环境下32位汇编语言程序设计》第8章 通用对话框
  • ssh端口转发的几种常用使用方式【本地端口转发、远程端口转发、反向端口转发、动态端口转发】
  • Jenkins 全方位指南:安装、配置、部署与实战应用(含图解)
  • Two-Twer模型做歌曲智能推荐与规则算法对比的优缺点分析
  • 对比rerank模型和embedding模型
  • 订餐后台管理系统 - day04退出登录与账号管理模块
  • C#简单组态软件开发
  • AlexNet:点燃深度学习革命的「卷积神经网络之王」
  • 50etf期权与现货套利是什么意思?
  • position属性
  • Linux学习:线程控制
  • FastAPI 入门科普:下一代高性能 Python Web 框架
  • 一般纳税人
  • 上海市赛/磐石行动2025决赛awd web2-python 4个漏洞详解
  • 漫谈《数字图像处理》之浅析图割分割
  • Java IO 流-详解
  • @GitLab 介绍部署使用详细指南
  • [Godot] C#获取MenuButton节点索引
  • 回车换行、缓冲区刷新、倒计时小程序
  • Woody:开源Java应用性能诊断分析工具
  • 智慧工地源码
  • STM32 USBx Device MSC standalone 移植示例 LAT1488
  • sr04模块总结
  • YOLO v11 目标检测+关键点检测 实战记录
  • 面向企业级产品开发的自动化脚本实战
  • 算法题(194):字典树
  • 分享一些关于电商商品详情API接口的实际案例
  • 做视频孪生的公司哪家好,推荐一家优秀的视频孪生公司
  • 基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信
  • 「LangChain 学习笔记」LangChain大模型应用开发:代理 (Agent)