byte数组变量转int变量

缘起:modbus传输数据,从下位机传来的数据存储在byte数组里面,转意存储在具体变量中时,需要对应位置。

c#中有对应的指令,示例代码如下:

How to convert a byte array to an int - C# | Microsoft Learn

byte[] bytes = [0, 0, 0, 25];

if (BitConverter.IsLittleEndian) Array.Reverse(bytes);

int i = BitConverter.ToInt32(bytes, 0);

Console.WriteLine($"int: {i}"); // Output: int: 25

试了一下,我去,第一行就错了,要用大花括号,巨硬,你们闹啥呢?

中间那个掉个的函数,有输出的是25,没有输出的就是419430400(0x19000000),十进制的25,还要转换成十六进制的0x19,才看懂了,行,你们真厉害。

回头来看modbus的实现,基本语句就是特定地址参数的读写,但是不知道为什么,下位机的写法也是各显神通,由于地址对应的是16bit,也就是两个字节,操作4字节时,byte数组顺序,有给搞成花式变化的,比如四个字节{1,2,3,4},你猜是什么?对应int是0x03040102,也就是前面两个字节是高在前,低在后,组成一个参数地址后,低地址在前,高地址在后。开发者不觉得晕吗?

照这个写法,还不如直接弄个四字节数组,来回自己折腾呢。捋顺了再转意出变量。

各个厂家的开发人员自己定义的变量方式还是和具体厂家确认好吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值