解包字符串并将其排列成所需的结构
本文关键字:排列 结构 包字符 字符 串并 | 更新日期: 2023-09-27 18:18:26
我正在尝试读取从第三方工具发送的字符串。它们发送的消息以{
开始,以}
结束。消息中的字段用*
隔开。第一个字段是MessageID
,其次是Number of Data Fields
,其余的是数据。
例如:
{14*2*57241*5684}
因此14
为MessageID
, 2
为数据字段数,数据(2个字段)为57241
和5684
。
我为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()
};