C# 类型为';的未处理异常;System.FormatException';

C# 类型为';的未处理异常;System.FormatException';,c#,forms,visual-studio,C#,Forms,Visual Studio,我的按钮里有一个简单的方法。背后的逻辑很简单,但我无法理解为什么在字符串集上会出现此错误 这里是错误 mscorlib.dll中发生类型为“System.FormatException”的未处理异常 附加信息:本应为7位编码的Int32中的字节太多 这是密码 private void button1_Click(object sender, EventArgs e) { FileStream data= new FileStream("data.DAT", File

我的按钮里有一个简单的方法。背后的逻辑很简单,但我无法理解为什么在字符串集上会出现此错误

这里是错误

mscorlib.dll中发生类型为“System.FormatException”的未处理异常

附加信息:本应为7位编码的Int32中的字节太多

这是密码

   private void button1_Click(object sender, EventArgs e)
    {
        FileStream data= new FileStream("data.DAT", FileMode.OpenOrCreate);
        BinaryReader a = new BinaryReader(data);
        while (data.Position < data.Length)
        {
            string name = a.ReadString();
            string egn = a.ReadString();
            string lenght = a.ReadString();
            int hour = a.ReadInt32();
            double price = a.ReadDouble();
            int days = a.ReadInt32();
            double result = price* hour* days;
            dataGridView1.Rows.Add(name, egn, lenght, hour, price, days, result);
        }
        data.Close();
    }
private void按钮1\u单击(对象发送者,事件参数e)
{
FileStream data=newfilestream(“data.DAT”,FileMode.OpenOrCreate);
BinaryReader a=新的BinaryReader(数据);
while(data.Position
如果看不到确切的数据,很难说,但我怀疑您误用了BinaryReader。例如,ReadString方法假定要读取的字符串以特定格式的长度作为前缀


基本上,BinaryReader设计用于读取BinaryWriter生成的文件,而不是任意的二进制文件。

具体哪一行?你能发布一个十六进制数据转储文件吗?数据可能并不完全包含你所认为的内容。文件是怎么写的?你能给我们看一下用来写它的代码吗?我不能显示用来写.dat文件的代码。但可以肯定的是,它不是由BrinaryWriter制作的,这会导致问题吗?另外,错误行是循环中的第一行,而数据文件不是由BinaryWriter编写的,但因为我不知道这可能会导致BinaryReader出现问题,所以我使用了它。谢谢!正如我记得的那样,它对所有其他数据类型仍然有用。只有字符串以不寻常的方式编码。