按位置读取二进制文件并转换它?

时间:2015-10-31 10:03:43

标签: c# readfile binaryreader

我知道在VB上我们可以使用这段代码读取二进制文件

    Function GetMonData()
            Dim Header(63) As Byte, Rows As Long, NoUse As Long
            Dim i As Long, j As Long, TmpStr As String

            Open "file.dat" For Binary As #1
                Get #1, , Header
                Get #1, , Rows
                Get #1, , NoUse       
            Close #1
    End Function

但是c#中的方法怎么样? 尤其是Get #1, , Header 我已经尝试了

string strFilePath = @"C:\file.dat";
FileStream stream = new FileStream(strFilePath, FileMode.Open);
BinaryReader b = new BinaryReader(File.Open(strFilePath, FileMode.Open));

我只是混淆了为头部获取数据(63)字节,(4)用于行的字节,(4)用于NoUse的字节 在VB中我们可以使用Get #1, , Header,那么c#呢?我需要寻找流吗?

先谢谢

1 个答案:

答案 0 :(得分:2)

那是VB6 / VBA代码。 VB.NET仍然不情愿地支持旧语法,以允许移植程序。但肯定你必须将声明从Long更改为Integer。

如果您需要能够读取这样的旧文件,那么最明显的方法是利用.NET优秀的语言互操作并创建一个您在C#项目中引用的VB.NET类库。到目前为止,确保代码兼容并处理Get()的怪异语义的最佳方法。

否则你将不得不使用BinaryReader.GetBytes()来读取Header,ReadInt32()来获取其他的。