Modbus系列随笔
Posted 又下雪了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Modbus系列随笔相关的知识,希望对你有一定的参考价值。
字节数组1
在数据传输过程中,都是采用字节数据的方式进行通信转递的
一个字节代表一个Byte有8个位
其中10进制的表示范围为0-255
16进制的表示范围FF
一个int16位整数,则由2个字组成
int32则由4个字组成
c#中的Byte[] 数组中
可以采用bitconvert.tostring
或者bitconvert.getbyte的方式进行正方向和反方向的转换
1. BitConverter.ToUInt16()的用法,是把两个字节转换为无符号整数,如:205 56 这两个字节的16进制是 CD 38 那么转为无符号整数 应该倒过来排 即 38CD 这个数转为无符号十进制整数就是 14541
2. BitConverter.ToString()的用法,这个就是把字节或字节数组转换为十六进制或十六进制的字符串形式,中间用“-”连接
byte[] bytes={10,138,19};
BitConverter.ToUInt16(bytes, 1);
在内存中,数值型数据次序与数组是相反的,即低字节在前面,高字节在后面。
在内存中是(用 16 进制表示) a, 8a ,13,当把这2个字节(从下标为1开始)当成 int16 时,为 138a(十进制的 5002).
总结:也就是从数组中取下标为1以后的两个字节,先各字节转换为16进制,然后倒序组合,转换为10进制。
(十进制 -> 十六进制 -> 倒序 -> 十进制)
同理:ToUInt32 取4个字节。ToUInt64 取8个字节。以上均为无符号(无负数范围)
以上是关于Modbus系列随笔的主要内容,如果未能解决你的问题,请参考以下文章