VS 2013 Jak odczytać bajt z pliku bianarnego

0

Czesc. Ma ktos pomysl jak poprawic ten kod, zeby czytal bajty z komorek 02E i 02F ? Na razie czyta tylko z pierwszych 4 komorek.

 Imports System.IO
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim OFD As New OpenFileDialog
        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            Using reader As New BinaryReader(File.Open(OFD.FileName, FileMode.Open))
                For looper = 0 To 3
                    Dim value As Integer = reader.ReadByte
                    TextBox4.AppendText(value.ToString("X2") & " ")
                Next
            End Using
        End If

    End Sub
0
reader.BaseStream.Seek(&H2E, SeekOrigin.Begin)
0

Dziękuję. Między czasie zdązyłem znaleźć jeszcze coś takiego:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox1.Text = String.Empty
        Using fs As New FileStream("c:\bin.bin", FileMode.Open)
            fs.Position = 30
            Using br As New BinaryReader(fs)
                For x As Int16 = 0 To 1
                    TextBox1.Text &= Asc(br.ReadChar) & " "
                Next
            End Using
        End Using
    End Sub 

Tylko, że wynik ostatecznie jest podawany w dec. Da radę jakoś to naprawić żeby wynik był podawany w hex ?

0

reader.BaseStream.Seek(&H2E, SeekOrigin.Begin)

Co zrobić, aby dodać kolejną komórkę do odczytu ?
Jeżeli dodam &H2E, &H2F to program się wywala .

0

pokaż kod. każdy odczyt ReadChar przesuwa wskaźnik do następnego bajtu, więc wystarczy dać dwa razy ReadChar tak samo jak robisz to cztery razy do odczytania pierwszych czterech bajtów.

0

Zrobiłem to troszkę w inny sposób:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim OFD As New OpenFileDialog
        Dim fullFile() As Byte
        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            fullFile = File.ReadAllBytes(OFD.FileName)
            TextBox4.AppendText(fullFile(&H2E).ToString("X2") & " ")
            TextBox4.AppendText(fullFile(&H2F).ToString("X2"))



        End If

    End Sub

Teraz jak pobrać wartości z textbox4 tak aby wykonać na nich obliczenia ?
Załóżmy, że
&H2E = BC
&H2F = DE

BCDE

Jak wykonać na tym obliczenie np. odejmowanie
Do tej pory robiłem tak, ale w tym przypadku to się nie sprawdza.

  Dim value As Integer = Integer.Parse(TextBox1.Text, Globalization.NumberStyles.HexNumber)
        value -= 4369
0

Klasa BinaryReader posiada metody ReadInt16, ReadUInt16 itp. które służą do czytania liczb binarnych, nie trzeba ich tak składać z bajtów.

0

Ale jak zrobić tak, aby od textbox4 odjąć np 2345 ? Można przypisać pod Value wartość z text boxa 4 ?

            Dim value As Integer = Integer.Parse(TextBox4.Text)
value -=2345
Textbox5.text = value 

Nie działa. Nieprawidłowy format ciągu wejściowego.

0

W textbox4 znajdują się odczytane komórki z pliku.

0

Może lepiej będzie jeżeli zacznę od nowa. Oto mój działający kod który odczytuje bajty z poszczególnego adresu i wyświetla je w textbox1.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim OFD As New OpenFileDialog
        Dim fullFile() As Byte

        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            fullFile = File.ReadAllBytes(OFD.FileName)
            TextBox1.AppendText(fullFile(&H2E).ToString("X2") & " ")
            TextBox1.AppendText(fullFile(&H2F).ToString("X2"))
        End If

    End Sub 

Teraz od wartości wyświetlonych w textbox1 chciałbym odjąć 3333(hex)
np. 4444 - 3333 = 1111
Tak aby to wyświetlało się w textbox2.

Dotychczas stosowałem takie coś:

        Dim value As Integer = Integer.Parse(TextBox1.Text, Globalization.NumberStyles.HexNumber)
        value -= 13107

Ale jak widać tego nie da rady zastosować w tym przypadku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1