根据C#中的modbus计算字符串的长度[关闭]

问题描述 投票:2回答:2
我正在进行modbus通信。我试图得到实际上是一个字符串的帧的长度。

while (reader.Read()) { data.Add(reader["read_param"].ToString()); } var single = string.Join("",data);

结果字符串是

4A601933906620468040204220442040004200404020602260246

根据文档,长度为1B中的hex27中的decimal

但是当我尝试获得长度int length = combine.Length;时,我正在获得53。如何在HEX中获取它?

任何帮助将不胜感激。

c# .net hex decimal modbus
2个回答
0
投票
您正在将字节转换为字符串,这会将每个单个字节转换为1或2个字符串字符。因此,从combine.Length获得的53是转换后的字符串的长度,从modbus协议获得的0x1B是字节字符串的长度。您将获得53个字符串字符,而不是54个字符串字符,因为其中一个字节可能是0x0X,因此开头的零被剥夺了。

我不确定您使用的是哪个阅读器,但是如果它读取的是字节,则可以添加一个计数器来确定modbus消息的长度。


0
投票
[发送字符串时,编码的字符串以某种标准格式发送,最流行的是UTF-8,每个字符可占用1到4个字节。

所以编码后的字符串可以比字符串中的字符具有更多的字节。

© www.soinside.com 2019 - 2024. All rights reserved.