vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: String in Hex 
Autor: Snof
Datum: 15.03.09 15:13

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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
String in Hex3.787dinho9914.03.09 20:56
Re: String in Hex2.233Snof14.03.09 21:35
Re: String in Hex1.756dinho9914.03.09 22:01
Re: String in Hex2.139Snof14.03.09 22:38
Re: String in Hex1.731dinho9915.03.09 11:02
Re: String in Hex1.662Snof15.03.09 12:09
Re: String in Hex1.688dinho9915.03.09 12:59
Re: String in Hex1.758dinho9915.03.09 13:42
Re: String in Hex2.300Snof15.03.09 15:13
Re: String in Hex1.783dinho9915.03.09 15:50

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel