如何使用c#从二进制文件中读取浮点数值?

10

我正在尝试从一个二进制文件中读取浮点数值,

public static void tmpTest ( )
    {
        string fileName = @"c:\debug\tmp_1.bin";

        /* Write */
        using ( BinaryWriter bw = new BinaryWriter ( File.Open( fileName, FileMode.Create ) ))
        {
            bw.Write ( 10.001f );
            bw.Write ( 10.002f );
        }

        /* Read */
        using ( BinaryReader br = new BinaryReader ( File.Open ( fileName, FileMode.Open ) ) )
        {
            int val_1 = br.Read (); // Output : 25
            int val_2 = br.Read (); // Output : 4
        }
    }
我知道在Read部分有些遗漏,当我读取这些值时,我得到了val_125val_24,而不是10(因为返回类型是整数),请指导我在这里做错了什么。
非常感谢您的帮助。

1
当从二进制文件中读取数字时,您必须使用适当的Read方法来将其读回。例如,对于Float类型,使用ReadSingle()方法,对于Double类型,使用ReadDouble()方法等。MSDN BinaryReader Methods - AeroX
为什么我的贴子被踩了?在你踩之前能否先评论一下呢? - SanVEE
3个回答

21

你查看了文档吗?BinaryReader中有一个ReadSingle方法可以做到这一点。

float value = binaryReader.ReadSingle();

2
非常感谢,我正在寻找ReadFloat(),没想到它会返回float。 - SanVEE

3

你需要读取一个单精度浮点数而不是整数。如果你需要整数,可以使用强制类型转换 (int)。

MSDN 示例

binaryReader.ReadSingle();

1
你正在使用read,而不是ReadSingle。我会假设读取将int强制转换为数据造成了一些转换问题。
请参阅以下关于ReadReadSingle的文档文章。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接