Kontakt
DSVGO
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