Разбор шестнадцатеричной строки в стиле C#
У меня проблема с моим кодом. Я помещаю значение смещения в список, затем читаю его и ищу в файле. Я использую следующий код.
Dim bw As New BinaryWriter(File.Open(filename, FileMode.Open, FileAccess.ReadWrite))
Try
For j As Integer = 0 To ListBox2.Items.Count - 1
czytana = ListBox2.Items.Item(j)
tablica = czytana.Split(" ") ' czytana is in format OFFSET: BYTE BYTE, offset is a hex addr
tablica(0) = tablica(0).Replace(":", "") 'I remove : from "OFFSET:"
bw.BaseStream.Seek("&H" + tablica(0), SeekOrigin.Begin) ' in ex. I got tablica(0)=000CFDD6, and I want to get &HCFDD6, but what I get is &H000CFDD6
'some part of code in here which does its job properly
Next j
Catch ex As Exception
MsgBox(ex.Message)
End Try
bw.Close()
проблема: мне нужно использовать tablica(0) в качестве смещения, tablica(1) и tablica(2) в качестве байтов. Что я хочу сделать, это открыть файл, выбрать смещение и заменить на tablica(2). czytana получил формат "tablica(0): tablica(1)" tablica(2) ".
Кто-нибудь возражает помочь?:)
1 ответ
Решение
Из ваших комментариев я понимаю, что у вас есть следующие входные данные:
OFFSET -> tablica(0). Sample Value: 000CFDD6
BYTE to write from OFFSET -> tablica(2). Sample Value: 6F
Ваш код должен выглядеть так:
bw.BaseStream.Seek(curOffset, SeekOrigin.Begin)
bw.Write(curByte)
Куда:
Dim curOffset As Long = Long.Parse(tablica(0), System.Globalization.NumberStyles.HexNumber)
'An equivalent approach would be: Dim offset As Long = Int64.Parse("&H" & tablica(0))
'Where all the zeroes after &H (and before the first non-zero character) do not matter; &H0001 is the same than &H1
Dim curByte as Byte = Byte.Parse(Integer.Parse(tablica(2), System.Globalization.NumberStyles.HexNumber))