2015-10-31 5 views
0

Я знаю на 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) байт для носика в VB мы можем использовать Get #1, , Header, насчет C#? Мне нужно искать поток?

Спасибо в продвинутом состоянии

ответ

2

Это код VB6/VBA. Синтаксис olden по-прежнему поддерживается в VB.NET, неохотно, чтобы разрешить программы портирования. Но, безусловно, вам придется изменить объявления от Long до Integer.

Если вам нужно читать старые файлы, то это самый очевидный способ сделать это - воспользоваться отличным языковым взаимодействием .NET и создать библиотеку классов VB.NET, которую вы ссылаетесь в своем проекте C#. Безусловно, лучший способ убедиться, что код совместим и может иметь дело с семантикой Weirdo Get().

В противном случае вам нужно будет использовать BinaryReader.GetBytes() для чтения заголовка, ReadInt32(), чтобы получить другие.

+0

hei спасибо за ваш ответ, я использовал BinaryReader.GetBytes() и другие ReadInt32(), как ваш ответ, но консоль просто показывает мне заголовок, другие никогда не показывают мне значение, поэтому мне нужно использовать для цикла для печати ReadInt32()? потому что консоль вроде застряла после заголовка, спасибо –

+0

Nvm, проблема решена :) Решение Convert.ToInt32 (ReadInt32()). поэтому значение теперь становится видимым Большое спасибо, Ханс! –