我的程序以字节数组的形式将数据从一个应用程序发送到另一个应用程序。我想提取部分数据以存储在不同的变量中。例如字节数组中的第一个 [7] 保存符号数据,下一部分是一个我不知道长度的数字,因为它会随着它发送的每个 msg 而变化。在我发送数据之前,我在我想要的每个数据部分之间用逗号将其分开。我的问题是设置一个将在逗号处停止的循环,以便我可以将数据添加到另一个变量中。如果这是有道理的,请任何想法都会有所帮助。谢谢。
问问题
384 次
3 回答
1
数据作为字节数组处理起来很复杂,因为它实际上是编码文本。只需对其进行解码(使用您用来将其转换为字节数组的编码)并将其拆分:
string[] parts = Encoding.UTF8.GetString(data).Split(',');
现在您可以获取每个部分并解析它们:
int symbol = Int32.Parse(parts[0]);
int count = Int32.Parse(parts[1]);
于 2012-12-05T19:10:05.770 回答
1
你需要知道你有什么编码,因为逗号在不同的编码方案中并不总是相同的字节值。另外,如果您想要效率,您可以尝试将字节数组解析为字节数组,但这更容易。此外,您可以在两端创建一个具有您需要的属性并且是 [Serializable] 的类。
如果出于某种原因您不想这样做,那么您可以像这样轻松地解析字节数组:
UTF8Encoding encoding = new UTF8Encoding();
string s = encoding.GetString(byteArray);
string[] values = s.Split(new char[] {','});
//then do something with the values
于 2012-12-05T19:06:46.330 回答
0
我建议定义一个表示您需要发送的数据的对象模型,然后使用一些序列化框架将其转换为字节数组/从字节数组转换。
参见例如http://msdn.microsoft.com/en-us/library/ms973893.aspx
您可能感兴趣的另一个主题是 .Net 中的数据合同。
于 2012-12-05T19:01:10.603 回答