Я пытаюсь открыть двоичный файл в VB.NET (Visual Studio 2010), который выглядит следующим образом:
Файл открывается нормально с помощью этого метода:
Dim OpenFile1 As New OpenFileDialog
If (OpenFile1.ShowDialog = System.Windows.Forms.DialogResult.OK And (OpenFile1.FileName.Length > 0)) Then
'do something
End If
Однако, если "сделать что-то":
Dim readText As String = File.ReadAllText(OpenFile1.FileName)
MsgBox(readText)
Преобразуется только первый байт, так как второй равен 00 (ноль) и усекает остальную часть файла,отмечая конец строки, и он отображает только первый байт F0 (≡ в ASCII).
Но если я это сделаю:
'convert file to hex string
Dim bytes As Byte() = IO.File.ReadAllBytes(OpenFile1.FileName)
Dim hex As String() = Array.ConvertAll(bytes, Function(b)
b.ToString("X2"))
Dim newfile As String
newfile = (String.Join("", hex))
RichTextBox1.Text = newfile
Теперь строка должным образом преобразуется в шестнадцатеричные значения,Пока все хорошо.
Однако, когда я пытаюсь преобразовать строку обратно в ASCII, используя этот метод:
'convert hex string to text and put it into the richtextbox
Dim asciistring As String = ""
For x As Integer = 0 To (newfile.Length - 1) Step 2
Dim k As String = newfile.Substring(x, 2)
asciistring &= System.Convert.ToChar(System.Convert.ToUInt32(k,
16)).ToString()
Next
RichTextBox1.Text = asciistring
Опять же, конвертируется только первый байт.Остальное усекается, как только он находит 00 (ноль).Есть ли способ обойти эту ситуацию?