【发布时间】:2016-02-13 18:42:24
【问题描述】:
我创建了多个二进制文件,每个文件包含 2 个字符串、2 个字符、1 个双精度和 1 个整数。读取的数据是
Fokker DR 1
Germany
D
A
1000.0
13
我正在尝试将 dat 文件解析为一个数组,以便我可以用适当的名称标记每个数据类型,例如
Name: Fokker DR 1
Country: Germany
Attack Mode: D
Turn Mode: A
etc.
但是我遇到了麻烦,因为在尝试使用 StreamReader 并在每个空格实例处拆分二进制文件时,由于名称(Fokker DR 1)包含多个不应包含的空格,我遇到了问题分裂。
这是我尝试拆分的代码:
if (file.Contains("plane1"))
{
StreamReader reader = new StreamReader("plane1.dat");
string line;
while ((line = reader.ReadLine()) != null)
{
string[] data = line.Split(' ');
bin.ReadBinary("plane1.dat");
Console.WriteLine("Name: " + data[0]);
Console.WriteLine("Country: " + data[1]);
Console.WriteLine("Turn Mode: " + data[2]);
Console.WriteLine("Attack Mode: " + data[3]);
Console.WriteLine("Cost: " + data[4]);
Console.WriteLine("Max Damage: " + data[5]);
}
}
是否有任何方法可以对不同数据类型的每个实例进行拆分,或者是否有另一种方法可以在我的二进制文件中标记数据?
【问题讨论】:
-
了解序列化并使用其中之一,如
XmlSerializer、BinaryFormatter、SoapFormatter、JavascriptSerializer、DataContractSerializer、DataContractJsonSerializer等......自定义序列化器/反序列化器应该处理许多极端情况... -
看起来这两个字符串由 ASCII 制表符 (0x07) 分隔。之后,您需要了解有关数据的更多信息,例如整数是四个字节,双精度是八个字节,两个字符之间填充。