【问题标题】:Calculating length of a string according to modbus in C# [closed]根据 C# 中的 modbus 计算字符串的长度 [关闭]
【发布时间】:2020-09-02 02:03:28
【问题描述】:

我正在处理modbus 通信。我正在尝试获取实际上是字符串的帧的长度。

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

结果字符串是

4A601933906620468040204220442040004200404020602260246

根据文档,hex 中的长度为 1Bdecimal 中的长度为 27

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

任何帮助将不胜感激。

【问题讨论】:

  • 请提供文档链接。你提到你得到 53 并且你想用 HEX 得到它。你可以做 string HEX = length.ToString("X");请尝试进一步详细说明您的问题。问题不是很清楚。

标签: c# .net hex decimal modbus


【解决方案1】:

您正在将字节转换为字符串,这会将每个字节转换为 1 或 2 个字符串字符。所以你从combine.Length得到的53是转换后的字符串的长度,来自modbus协议的0x1B是字节字符串的长度。您得到 53 个字符串字符而不是 54 个,因为其中一个字节可能是 0x0X,所以前导零被去掉了。

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

【讨论】:

    【解决方案2】:

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

    所以编码后的字符串的字节数可以多于字符串中的字符数。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2023-04-04
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多