bytes = Byte.Parse(RichTextBox1.Text, Globalization.NumberStyles.HexNumber) Das funktioniert nicht, weil Der Text zu lang ist. Byte.Parse gibt auch immer nur einen einzelnen Byte-Wert zurück, kein ganzes Array.
Was du machen möchtest geht so:' Anzahl der Bytes berechnen
Dim len As Integer = RichTextBox1.Text.Length \ 2
' Byte-Array in das die Daten kommen
Dim bytes(len - 1) As Byte
' Text schrittweise in Bytes umwandeln.
For i As Integer = 0 To len - 1
bytes(i) = Byte.Parse( _
RichTextBox1.Text.Substring(i * 2, 2), _
Globalization.NumberStyles.HexNumber)
Next
bytes = System.Text.Encoding.UTF8.GetBytes(RichTextBox1.Text) Dieser Code ist nich das was du möchtest. Dabei wird der Text in der RichTextBox als ganz normaler Text interpretiert. Die Methode gibt dir dann die (in UTF8 codierte) Darstellung des Textes zurück. Im Prinzip die computerinterne Darstellung des Textes.
sb.Append(String.Format("{0:X2}", Hex(b))) Was steht im Hex-Array?
Wie wird es gefüllt?
Wieso willst du die Daten als Text haben? Sie stehen doch als Text in der RichTextBox.
Dir ist schon klar, dass du den Wert von b als Index für das Hex-Array verwendest?
sb.Append(String.Format(Byte.Parse(b, Globalization.NumberStyles.HexNumber))) Wieso willst du die Daten als Text haben? Sie stehen doch als Text in der RichTextBox.
String.Format erwartet min. 2 Parameter.
Die Parse-Methode dient dazu einen String in ein numerischen Typ umzuwandeln. Du übergibst aber keinen String, sondern ein Byte. Wenn VB das compiliert (Option Strikt aus?) und ausführt, dann wandelt es b in einen String um, der den Wert von b als Dezimalzahl darstellt. Danch wird dieser als Hex-Wert interpretiert (für fast alle Werte fehlerhaft), wieder in ein Byte umgewandelt und dann wieder in einen Text umgewandelt. Zusammengefasst sieht das dann etwa so aus:
Byte -> String -> Byte -> String
Und die Umwandlung ist nicht mal korrekt.
Wenn ich das richtig verstehe, möchtest du den Inhalt deiner RichTextBox als Hex-Werte interpretieren und dann in einer Datei speichern. Auch wenn ich nicht glaube, dass es dir wirklich weiterhilft geb ich dir mal den Code dafür (in einer Methode gekapselt):Sub SaveRTB1(AusgabeDatei As String)
' Anzahl der Bytes berechnen
Dim len As Integer = RichTextBox1.Text.Length \ 2
Using fs As New FileStream(AusgabeDatei, FileMode.Create, FileAccess.Write)
Using writer As New BinaryWriter(fs)
' Text schrittweise in Bytes umwandeln und speichern.
For i As Integer = 0 To len - 1
Dim b As Byte = Byte.Parse( _
RichTextBox1.Text.Substring(i * 2, 2), _
Globalization.NumberStyles.HexNumber)
writer.Write(b)
Next
writer.Close()
End Using
End Using
End Sub |