解包字符串并将其排列成所需的结构

本文关键字:排列 结构 包字符 字符 串并 | 更新日期: 2023-09-27 18:18:26

我正在尝试读取从第三方工具发送的字符串。它们发送的消息以{开始,以}结束。消息中的字段用*隔开。第一个字段是MessageID,其次是Number of Data Fields,其余的是数据。

例如:

{14*2*57241*5684}

因此14MessageID, 2为数据字段数,数据(2个字段)为572415684

我为message做了一个结构

struct EMessage
{
    public MessageID ID;
    public byte length;
    public Int32[] data; // Int because the maximum size is 32 bit
} 

和读取消息

的功能
EMessage unPackEMessage(string messageFromE)
{
        int strLength = messageFromE.Length;
        char[] a = new char[strLength];
        int i = 0;
        foreach (char ch in messageFromE)
        {
            a[i] = ch;
            i++;
        }
        EMessage theMessage = new EMessage();
        theMessage.ID = (MessageID)a[1];
        theMessage.length = (byte)a[3];
        int[] mData = new int[theMessage.length];
        // Please help here
        return theMessage;
    }

我不能得到正确的数据部分。我不能拆分剩余的字符串并将数据转储到结构的数据部分。请帮助

解包字符串并将其排列成所需的结构

像这样:

  String source = "{14*2*57241*5684}";
  String[] items = source.Trim('{', '}').Split('*');
  EMessage result = new EMessage() {
    ID = (MessageID) items[0],  //TODO: convert String to MessageID type value here
    length = Byte.Parse(items[1]),
    data = items
      .Skip(2)
      .Select(item => int.Parse(item))
      .ToArray()
  };