C# 之工控机数据类型 高低位(大小端)、BitConverter、IsLittleEndian、字节数组转换(高低位)

八种基本数据类型:byte、short、int、long、float、double、boolean、char

byte

8位、有符号的以二进制补码表示的整数
min : -128(-2^7)
max: 127(2^7-1)
default: 0
对应包装类:Byte
在这里插入图片描述

short

16位、有符号的以二进制补码表示的整数
min : -32768(-2^15)
max: 32767(2^15 - 1)
default: 0
对应包装类:Short

int

32位、有符号的以二进制补码表示的整数
min : -2,147,483,648(-2^31)
max: 2,147,483,647(2^31 - 1)
default: 0
对应包装类:Integer

long

64位、有符号的以二进制补码表示的整数
min : -9,223,372,036,854,775,808(-2^63)
max: 9,223,372,036,854,775,807(2^63 -1)
default: 0
对应的包装类:Long

float

单精度、32位、符合IEEE 754标准的浮点数
float 在储存大型浮点数组的时候可节省内存空间
浮点数不能用来表示精确的值,如货币 要用 decimal
default: 0.0f
对应的包装类:Float

double

双精度、64位、符合IEEE 754标准的浮点数
浮点数的默认类型为double类型
double类型同样不能表示精确的值,如货币
default: 0.0d
对应的包装类:Double

char 一个字节 8位

char类型是一个单一的 16 位 Unicode 字符
最小值是 \u0000(即为0)
最大值是 \uffff(即为65,535)
char 数据类型可以储存任何字符
对应的包装类:Character

boolean

boolean数据类型表示一位的信息
只有两个取值:true 和 false
这种类型只作为一种标志来记录 true/false 情况
对应的包装类:Boolean

BitConverter.IsLittleEndian

BitConverter.IsLittleEndian
》》True 小端高端 存储数据
》》False 高端低端 存储数据

大小端转换

因Modbus协议 都是高位地位请求,发送 数据的
在这里插入图片描述
BitConverter.IsLittleEndian 本人电脑显示 True, 则 表示 数据存储是 地位 高位 方式存储在电脑之中的

int 300 对应的 二进制 0000 0001 0010 1100

在这里插入图片描述

如果用 高位 地位 方法存储

在这里插入图片描述

//方法1private ushort ReversalHighLow(ushort val){if (BitConverter.IsLittleEndian){byte[] arrSrc = BitConverter.GetBytes(val);byte[] arrDst = new byte[arrSrc.Length];arrDst[0] = arrSrc[1];arrDst[1] = arrSrc[0];return BitConverter.ToUInt16(arrDst, 0);}else{return val;}}// 调用ushort st = ReversalHighLow(300);//方法二private ushort ReversalHighLow(ushort val){if (BitConverter.IsLittleEndian){byte high = (byte)((val - val % 256) / 256);  //数字减去 低8位, 得到的数字再除以256得到高8位byte low = (byte)(val % 256);  //数字对256取余数, 得到低8位byte[] change1 = { high, low };return BitConverter.ToUInt16(change1,0);}else{return val;}}// 调用ushort st = ReversalHighLow(300);//方法三private ushort ReversalHighLow(ushort val){if (BitConverter.IsLittleEndian){byte[] bytes = BitConverter.GetBytes(val);Array.Reverse(bytes);return BitConverter.ToUInt16(bytes, 0);}else{return val;}}// 调用ushort st = ReversalHighLow(300);//方法3 private ushort ReversalHighLow(ushort val){if (BitConverter.IsLittleEndian){// 右移8位获取高字节byte highByte = (byte)(val >> 8); // &是按位与运算符(同时1则1,否则0),// 与16位,高8位是000000000, 低8位是 11111111    (是高位低位方式存储)// 16位 ,OXFF:0000000011111111               (是高位低位方式存储)            byte lowByte = (byte)(val & 0xFF); byte[] bytes = { highByte, lowByte };return BitConverter.ToUInt16(bytes,0);}else{return val;}}// 调用ushort st = ReversalHighLow(300);

字节数组转换 bool数组

在这里插入图片描述

在这里插入图片描述

 private List<bool> GetBitFromByte(byte[] val ){List<bool> bits = new List<bool>();for (int i = 0; i < val.Length; i++){if (BitConverter.IsLittleEndian){for (int j = 7; j >= 0; j--){bits.Add((val[i] & 1) == 1);val[i] >>= 1;}}else{for (int j = 0; j <= 7; j++){bits.Add((val[i] & 1) == 1);val[i] >>= 1;}}}return bits;}//调用List<bool> bts = GetBitFromByte(BitConverter.GetBytes((ushort)500));

字节数组转成short

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

keil中GD32 MCU IAP中APP的存储地址如何设置?

前面和大家聊过什么是IAP&#xff0c;那么IAP中APP的存储地址该如何设置呢&#xff1f; 以keil为例&#xff0c;打开工程的option选项卡&#xff1a; 将IROM1中的地址改为你想要保存的位置&#xff0c;比如0x08008000开始的位置&#xff1a; 这样通过keil烧录&#xff0c;程序…

光伏电站设计的关键部分

光伏设计&#xff0c;作为光伏发电项目成功实施的前提与基础&#xff0c;其科学性与合理性直接关乎项目的发电效率、经济性及环境适应性。本文将从选址规划、系统设计、组件选型、电气布局及运维考虑等几个方面&#xff0c;探讨光伏设计的关键部分。 一、选址踏勘 光伏项目踏勘…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备&#xff0c;专为工业环境下的高速数据传输和远程设备控制而设计&#xff0c;支持多种工业以太网协议&#xff0c;包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

c++人脸识别项目,满足工业界对于人脸识别系统的高标准需求!(一)

目录 引言&#xff1a; 环境构建&#xff08;本文使用cmake&#xff0c;开发环境ubuntu22.04&#xff0c;IDE为clion&#xff09; 项目文件构造 CMakeLists.txt编写 简单头文件 最初成员函数实现 add函数实现思路 search函数实现思路 main函数简单实现 思路 添加环…

Spring Boot集成qwen:0.5b实现对话功能

1.什么是qwen:0.5b&#xff1f; 模型介绍&#xff1a; Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型&#xff0c;在大量数据&#xff08;包括网页文本、书籍、代码等&#xff09;进行了预训练。 硬件要求&#xff1a;…

Spring Web MVC入门(2)(请求2)

目录 1.传递JSON数据 传递JSON对象 2.获取URL中的参数PathVariable 3.上传文件RequestPart 4.获取Cookie/Session (1)获取Cookie 简洁获取Cookie (2)获取Session Sesson读取 简洁获取Session(1) 简洁获取Session(2) 5.获取Header 简洁获取Header 1.传递JSON数据 J…

大模型计算及GPU相关概念记录

浮点运算 算力最基本的计量单位是 FLOPS&#xff0c;英文 Floating-point Operations Per Second&#xff0c;即每秒执行的浮点运算次数。浮点运算其实就是带小数的加减乘除运算。 算力的计量单位&#xff0c;除了 FLOPS&#xff0c;从小到大还有&#xff1a; KFLOPS&#x…

新建一个git仓库并且把已有项目推送到git远程仓库

总贴 1. 创建一个空项目&#xff0c;不会看新建仓库 2. 克隆这个项目到某个文件夹去&#xff0c;比如我想克隆到我的E盘的code下面 3. 我的这个文件夹下面是有东西的&#xff0c;一点都不影响 . 4. 用命令行进入这个文件夹 命令行已经显示了已经在E盘下面code文件夹, 不会…

【TortoiseGitPlink提示输入密码解决方法】

问题&#xff1a;TortoiseGitPlink提示输入密码 解决方案 参考链接&#xff1a;TortoiseGitPlink提示输入密码解决方法 但后半部分和上文不同&#xff0c;点击图中 Load Putty Key 即可。

CrowdStrike更新导致蓝屏事件

1. 事件描述 网络上发现大量企业Windows系统主机出现BSOD&#xff08;Bluescreen of Death&#xff09;并循环重启。 观察蓝屏信息&#xff0c;发现造成蓝屏的程序均是csagent.sys&#xff0c;该程序为CrowdStrike终端安全软件组件。 经确认&#xff0c;CrowdStrike是造成本…

第5章 单片机的中断系统

5.1 中断的概念 5.2 中断控制系统 5.3 中断处理过程 5.4 中断的编程及应用举例 5.1 中断的概念 日常生活的中断现象举例 中断是指在突发事件到来时先中止当前正在进行的工作&#xff0c;转而去处理突发事件。待处理完成后&#xff0c;再返回到原先被中止的工作处&#xff…

【STM32】LED闪烁LED流水灯蜂鸣器(江科大)

LED正极&#xff1a;外部长脚、内部较小 LED负极&#xff1a;外部短脚、内部较大 LED电路 限流电阻&#xff1a;保护LED&#xff0c;调节LED亮度&#xff08;本实验用面包板为了方便&#xff0c;省去了限流电阻&#xff0c;设计电路时要加上&#xff09; 左上图&#xff1a;低…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十六章 Linux驱动初探

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

阿尔泰科技工业电脑IPC-8363工控机

概述&#xff1a; IPC-8363是一款支持 LGA 1200 Intel 10th/11th Generation Core™ i9/i7/i5/i3, Celeron and Pentium processor 的工业电脑。配置2组独立 SO-DIMM DDR4 2666/2933MHz内存&#xff0c;最大可扩展至128GB。 主要技术指标&#xff1a; 产品图示&#xff1a; 系…

Codeforces Round 672 (Div. 2) C1. Pokémon Army (easy version) (DP)

不知道能不能用贪心&#xff0c;反正我是没看出来&#xff0c;所以用DP求解。 首先分析一下题意&#xff0c;我们要在一段序列中取出一段子序列&#xff0c;然后让这段子序列按顺序逐个先加后减最终得到的结果最大。 如果要用DP&#xff0c;那么我们首先就要思考怎么表示状态…

Apache SeaTunnel——OLAP 引擎的数据动脉

导读本文将分享如何利用 Apache SeaTunnel 将各个业务系统的数据同步到 OLAP 引擎。 主要内容包括以下六大部分&#xff1a; 1. Apache SeaTunnel 项目介绍 2. Apache SeaTunnel 核心功能 3.SeaTunnel 在 OLAP 场景下的应用 4. 社区近期计划 5. WhaleTunnel 产品特性 6. …

idea怎么配置gradle多个版本

1.背景 gradle版本很多,而且很多时候版本是不兼容的,我们希望拉取下来的代码就包含已经配置好的版本,而不是去配置本机的gradle版本..... 意思就是要实现项目A可以用6.X版本 项目B可以使用7.X版本 项目C可以用9.X版本..... 2.配置方式 步骤一:项目根路径下保留一个文件夹…

MySQL事务管理详解:特性、问题与解决方案

什么是事务&#xff1f; 事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位&#xff0c;其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 事务的四大特…

Docker搭建Harbor

1.什么是Harbor Harbor 是 vMware 公司开源的企业级 Docker 〖egistry 项日&#xff0c;其日标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。Harbor以 Docker 公司开源的 Registry 为基础&#xff0c;提供了图形管理UI 、基于角色的访问控制(Role Based Accesscontr…

活动回顾 | AutoMQ 联合 GreptimeDB 共同探讨新能源汽车数据基础设施

7 月 13 日&#xff0c;AutoMQ 携手 GreptimeDB“新能源汽车数据基础设施” 主题 meetup 在上海圆满落幕。本次论坛多角度探讨如何通过创新的数据管理和存储架构&#xff0c;提升汽车系统的性能、安全性和可靠性&#xff0c;从而驱动行业的持续发展和创新&#xff0c;涵盖 Auto…