VS 2013 Jak odczytać bajt z pliku bianarnego

Odpowiedz Nowy wątek
2015-01-16 18:26
Pijany Pomidor
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

Pozostało 580 znaków

2015-01-16 18:57
0
reader.BaseStream.Seek(&H2E, SeekOrigin.Begin)
edytowany 2x, ostatnio: Azarien, 2015-01-16 18:57

Pozostało 580 znaków

2015-01-16 19:00
Pijany Pomidor
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 ?

Pozostało 580 znaków

2015-01-16 19:27
2015-01-16 19:33
Pijany Pomidor
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 .

Pozostało 580 znaków

2015-01-16 22:02
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.

Pozostało 580 znaków

2015-01-16 22:08
Pijany Pomidor
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

Pozostało 580 znaków

2015-01-16 22:29
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.

Pozostało 580 znaków

2015-01-16 22:39
Pijany Pomidor
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.

a co jest w tym TextBox4? - Azarien 2015-01-17 02:46

Pozostało 580 znaków

2015-01-17 09:59
Pijany Pomidor
0

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

Pozostało 580 znaków

2015-01-17 11:02
Pijany Pomidor
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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