VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / Daten / Strings / HexDump Strings hexadezimal darstellen |
Möchte man Texte/Dateien System-nah analysieren, so ist eine hexadezimale Darstellung oft unerläßlich. Auch bei der Daten-Übertragung kann eine Hex-Darstellung u.U. Probleme vermeiden (z.B. wenn das Protokoll keine Sonderzeichen erlaubt).
Die VB-Funktion Hex$ kann allerdings nur ein einzelnes Byte in eine entsprechende Hex-Zahl konvertieren. Größere Texte/Dateien müssen selbst behandelt werden, z.B. mit mit der unten gezeigten HexDump-Funktion.
Der folgende Code-Ausschnitt zeigt (unter Verwendung der in "Beliebige Datei einlesen" gezeigten ReadFile-Funktion) den Inhalt der Datei "Config.sys" als HexDump an:
Dim s As String s = ReadFile("C:\Config.Sys") s = HexDump(s) MsgBox s
Die HexDump-Funktion initialisiert den Ergebnisstring mit der doppelten Länge des Eingabetextes und fügt an den richtigen Stellen die Hex-Werte ein.
Public Function HexDump(ByRef Text As String) As String
Dim Bytes() As Byte
Dim i As Long
Dim WritePos As Long
'Initialisierung:
HexDump = Space$(LenB(Text))
Bytes = StrConv(Text, vbFromUnicode)
'Bytes hexadezimal einpassen:
WritePos = 1
For i = LBound(Bytes) To UBound(Bytes)
Mid$(HexDump, WritePos) = Hex2(Bytes(i))
WritePos = WritePos + 2
Next i
End Function
Die folgende Hilfsfunktion wandelt einen Byte-Wert in eine 2-stellige Hex-Zahl um:
Public Function Hex2(ByVal n As Byte) As String
If n And &HF0 Then
'Hex$(n) ist bereits 2-stellig:
Hex2 = Hex$(n)
Else
'Hex$(n) ist 1-stellig, also 0 davorsetzen:
Hex2 = "0" & Hex$(n)
End If
End Function
© Jost Schwider, 06.08.2001-06.08.2001 - http://vb-tec.de/hexdump.htm