我有一个 1250 字节长的固定长度字节数组。它可能包含以下类型的数据:
由 5 个字节组成的对象 A。第一个字节包含字母“A”,接下来的四个字节存储一个从 1 到 100000 的整数。
由 2 个字节组成的对象 B。第一个字节包含字母“B”,下一个字节包含一个从 1 到 100 的整数。
由 50 个字节组成的对象 C。所有 50 个字节都用于存储 ASCII 编码的字符串,该字符串仅由数字和以下字符组成:- + ( 和 )
我不知道字节数组中有多少每种对象类型,但我知道它们被组合在一起(对象 B、对象 B、对象 A、对象 A、对象 A、对象 C 等)。大多数时候,当我解析一个字节数组时,该数组包含一种类型的数据(例如,所有项目都是对象 A)所以我确切地知道每个项目由多少个字节组成,我只是循环遍历处理字节的数组. 在这种情况下,我有三种不同类型的数据,它们的长度都不同。我在想我需要做这样的事情:
int offset = 0;
while (offset <= 1250)
{
string objectHeader = Encoding.ASCII.GetString(byteArray, offset, 1);
if (objectHeader.Equals("A"))
{
// read 4 more bytes and then convert into int value (1 - 100000)
index += 5;
}
else if (objectHeader.Equals("B"))
{
// read 1 more byte and then convert into int value (1 - 100)
index += 2;
}
else
{
// read 49 more bytes and then convert into a string
index += 50;
}
}
有没有更好的方法来做到这一点?