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.rhkb.cn/news/380134.html

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

相关文章

spark shell

1.进行shell命令行 spark-shell 2.创建RDD 2.1 读取文件创建RDD 2.1.1读取linux文件系统的文件创建RDD --需要保证每一个worker中都有该文件 val data1 sc.textFile("file:/opt/file/word.txt") 2.1.2读取hdfs文件系统上的文件创建RDD val data2sc.textFile("…

正点原子STM32(基于HAL库)6

目录 TFTLCD&#xff08;MCU 屏&#xff09;实验TFTLCD 简介TFTLCD 简介液晶显示控制器FSMC 简介FSMC 关联寄存器简介 硬件设计程序设计FSMC 和SRAM 的HAL 库驱动程序流程图程序解析 下载验证 LTDC LCD&#xff08;RGB 屏&#xff09;实验RGBLCD<DC 简介RGBLCD 简介LTDC 简介…

Proxyman for Mac v5.6.1 抓包调试工具

Mac分享吧 文章目录 效果一、下载软件二、功能三、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 四、运行测试1、打开软件 安装完成&#xff01;&#xff01;&#xff01; 效果 一…

虚拟机及其Debian(kali)安装

本机电脑为Windows10系统专业版&#xff0c;在此基础上安装VMware和系统&#xff08;Kali&#xff09; 步骤如下 一、安装 VMware Workstation Pro v16.2.4 安装步骤可参照网上博客&#xff0c;该步骤较简单&#xff0c;此处不做讲解。文件中共计两个&#xff0c;其中一个是激活…

.NET C# 配置 Options

.NET C# 配置 Options 使用 options 模式可以带来许多好处&#xff0c;包括清晰的配置管理、类型安全、易于测试和灵活性。但在使用过程中&#xff0c;也需要注意配置复杂性、性能开销和依赖框架等问题。通过合理设计和使用&#xff0c;可以充分发挥 options 模式的优势&#…

【.NET全栈】ASP.NET开发Web应用——计算器

文章目录 一、简单计算器二、复杂计算器 一、简单计算器 新建Web应用项目&#xff0c;窗体页面 窗体设计代码&#xff1a; <% Page Language"C#" AutoEventWireup"true" CodeBehind"Default.aspx.cs" Inherits"AdoDemo.Default"…

JVM:常用工具总结

文章目录 一、jstat工具 一、jstat工具 Jstat工具是JDK自带的一款监控工具&#xff0c;可以提供各种垃圾回收、类加载、编译信息等不同的数据。使用方法为&#xff1a;jstat -gc进程ID每次统计的时间间隔&#xff08;毫秒&#xff09;统计次数。 C代表Capacity容量&#xff0c…

数据库系统概论:事务与并发一致性问题

随着网络应用的普及&#xff0c;数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面&#xff0c;旨在提高系统的吞吐量和响应时间&#xff0c;以满足多用户同时访问数据库的需求。然而&#xff0c;这…

使用viso画流程图做PPT

参考链接&#xff1a;Visio如何快速制作流程图_哔哩哔哩_bilibili 调出框图&#xff1a; 将需要的图形拖过来 小四的话&#xff0c;是12pt 连接框图 改变线的连接类型 添加箭头 选中所有需要添加箭头的图片&#xff0c;然后选择不同样式的箭头&#xff0c;查看号他们的朝向…

测试用例的设计方法

等价类 等价类概念&#xff1a;在所有测试的数据中&#xff0c;具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充&#xff0c;其主要区别是&#xff1a; 边界值测试设计不是从某一个等价类中…

jenkins 插件版本冲突

一、Jenkins安装git parameter 插件重启后报错与临时解决方案 cd /root/.jenkins cp config.xml config.xml.bak vim config.xml <authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAcces…

邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS)

1. 前言 使用过邮件客户端的同学一定见过下面这张图。这是客户端账号配置界面&#xff0c;里面有SSL、STARTTLS选项。刚接触邮件客户端的同学肯定会有这些疑问&#xff1a;什么是SSL&#xff1f;什么是STARTTLS&#xff1f;两者有什么区别&#xff1f;具体该如何选择呢&#x…

echarts实现3d柱状效果

代码如下&#xff0c;单个的调第一个方法&#xff0c;多个柱状的调第二个方法&#xff0c;具体情况修改参数或者二次开发即可 //3d柱状图 export function getEcharts3DBar (xAxisData:string[][name1,name2,name3], data:number[][1,2,3], colorObj:IBaseObject{topStartColo…

ubuntu 更新源

前言 实现一键替换在线源 一键更新源 ubuntu 全球镜像站以下支持现有ubuntu 20&#xff0c;22&#xff0c;24 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.li…

Kafka介绍及Go操作kafka详解

文章目录 Kafka介绍及Go操作kafka详解项目背景解决方案面临的问题业界方案ELKELK方案的问题日志收集系统架构设计架构设计组件介绍将学到的技能消息队列的通信模型点对点模式 queue发布/订阅 topicKafka介绍Kafka的架构图工作流程选择partition的原则ACK应答机制Topic和数据日志…

Unity: TextMeshPro生成中文字体(附3.5k,7k,2w常用字集)

免费常用3千5&#xff0c;7千字&#xff0c;2万字中文字体包 1.选择Window/TextMeshPro/Font Asset Creator 注&#xff1a;准备字体&#xff1a;从字体库或其他来源获取中文字体文件&#xff0c;通常为.ttf、.otf或.ttc格式。最简单的方式是从Windows系统文件的Font文件夹里…

Kafka(四) Consumer消费者

一&#xff0c;基础知识 1&#xff0c;消费者与消费组 每个消费者都有对应的消费组&#xff0c;不同消费组之间互不影响。 Partition的消息只能被一个消费组中的一个消费者所消费&#xff0c; 但Partition也可能被再平衡分配给新的消费者。 一个Topic的不同Partition会根据分配…

Linux云计算 |【第一阶段】SERVICES-DAY4

主要内容&#xff1a; DHCP概述、PXE批量装机、配置PXE引导、Kickstart自动应答、Cobbler装机平台 一、DHCP服务概述及原理 DHCP动态主机配置协议&#xff08;Dynamic Host Configuration Protocol&#xff09;&#xff0c;由IETF&#xff08;Internet网络工程师任务小组&…

【JavaScript 算法】最长公共子序列:字符串问题的经典解法

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理状态转移方程初始条件 二、算法实现注释说明&#xff1a; 三、应用场景四、总结 最长公共子序列&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09;是字符串处理中的经典问题。给定两个字符串…

[算法题]买卖股票的最好时机(一)

题目链接: 买卖股票的最好时机(一) 利用贪心, 并且遍历求解, 从前往后遍历, 每遍历到一个位置就在该天卖出, 利用一个变量保存在第 i 天卖出时, 在区间 [0, i-1] 中的最小买入价格, 再用一个变量保存每次卖出的最大值, 不断遍历更新卖出的最大值即可. 图示: 题解代码: #inc…