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个字节。以上均为无符号(无负数范围)

上一篇:CAN总线和Modbus总线,该如何选择


下一篇:基于TIA博途通过Modbuspoll库文件实现多个温控设备的modbus轮询读写操作