我有一个1250字节长的固定长度字节数组。它可能包含以下类型的数据:解析包含不同类型数据的字节数组
对象A由5个字节组成。第一个字节包含 字母“A”,接下来的四个字节存储从1到100000的整数。
对象B由2个字节组成。第一个字节包含字母“B”,下一个字节包含从1到100的整数。
对象C由50个字节组成。所有的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;
}
}
有没有更好的方法来做到这一点?
如果封装在类C实例中的字符串以'B'字符开头会怎么样?你怎么知道如何解开它?你需要发出某种类型的信息。 – Matt
您正在存储此信息,还是您尝试加载的预先存在的数据?我问,因为有比字节数组更容易存储数据的方法。 – sircodesalot
@Matt我没有说对象C所表示的字符串将只包含数字。但是,如果情况并非如此,您会建议哪种类型的信息? – user685869