2012-12-05 52 views
0

我的程序将数据从一个应用程序发送到另一个字节数组中。我想拉出部分数据以存储不同的变量。例如字节数组中的第一个[7]包含符号数据,下一个部分是一个我不知道长度的数字,因为它会随着它发送的每个msg而变化。在我发送数据之前,我需要用每段数据之间的逗号分隔数据。我的问题是设置一个循环,将停止在逗号,所以我可以将数据添加到另一个变量。如果这是有道理的,任何想法都会有所帮助。谢谢。通过字节数组排序

+2

你有没有考虑其他数据格式,如JSON或XML?如果您控制这两种应用程序,则应选择其中一种广泛传播的数据交换格式。 –

+0

您是否有一段代码可以显示您在哪一部分数据之间以逗号分隔的位置?在字节数组的背景下很难描绘你的意思。也许这不是传递数据的理想结构? – kaveman

+0

这听起来像你只需要拆分数组,而不是对其进行排序。我建议相应地改变标题。 – RonaldBarzell

回答

1

你需要知道你有什么编码,因为在不同的编码方案中,逗号并不总是相同的字节值。另外如果你想要效率,你可以尝试将字节数组解析为一个字节数组,但这更容易。另外,你可以在两端创建一个具有你需要的属性的类,并且是[Serializable]。

如果出于某种原因你不想这样做,那么你可以很容易地解析字节数组是这样的:

UTF8Encoding encoding = new UTF8Encoding(); 
string s = encoding.GetString(byteArray); 
string[] values = s.Split(new char[] {','}); 

//then do something with the values 
1

的数据只是复杂的处理,因为一个字节数组,因为它是真正的编码文本。只是(使用您用来把它变成一个字节数组的编码)进行解码,并把它分解:

string[] parts = Encoding.UTF8.GetString(data).Split(','); 

现在,您可以同时获得各个部分,然后分析它们:

int symbol = Int32.Parse(parts[0]); 
int count = Int32.Parse(parts[1]);