Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Daten / Strings / HexDump

Strings hexadezimal darstellen

Einleitung

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.

Beispiel

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

Code / Quelltext

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