ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 14.06.2000

Diese Seite wurde zuletzt aktualisiert am 14.06.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Hexadezimale Sichtweisen

Zurück...


Anzeige

(-hg) mailto:hg_hexdump@aboutvb.de

Die Visual Basic-eigene MSDN Library - VB HexHex-Funktion ist dazu gedacht, einzelne Zahlen als Strings im Hexadezimal-System darzustellen. Längere Byte-Folgen, wie etwa Speicherauszüge ("Dumps") lassen sich damit jedoch kaum erstellen. Ebenso wenig ist die Darstellung von Datei-Inhalten als so genannte "HexDumps", wie sie von vielen Datei-Betrachtern und Hex-Editoren geboten werden, damit direkt realisierbar. Schließlich fehlt auch noch die Möglichkeit, ganze Zeichenfolgen (Strings) in ihrem hexadezimalen Äquivalent darzustellen. Die hier vorgestellten Funktionen StringToHexString, HexStringToString und HexDump füllen diese Lücke (wegen des Umfangs siehe gesonderte Code der FunktionenCode-Seite!).

Das Grundgerüst bildet die Funktion StringToHexString, die im einfachsten Fall die Zeichen eines ihr übergebenen, nahezu beliebig langen Strings Byte für Byte in Hex-Darstellung umsetzt.

Public Enum HexStringConstants
  hsANSI
  hsUnicode
End Enum

Public Function StringToHexString(Text As String, _
 Optional ByVal CharMode As HexStringConstants, _
 Optional ByVal ReverseOrder As Boolean = True, _
 Optional Delimiter As String, _
 Optional GroupDelimiter As String, _
 Optional ByVal CharsPerGroup As Long = 4) As String

Im optionalen Parameter CharMode können Sie festlegen, ob die Rückgabe in herkömmlicher ANSI-Darstellung (zwei Hexadezimal-Stellen je Zeichen bzw. Byte) oder in Unicode-Darstellung (zwei Byte je Zeichen, somit vier Hexadezimal-Stellen) erfolgen soll. Im weiteren optionalen Parameter ReverseOrder (Voreinstellung = True, wirksam nur für die Unicode-Darstellung) können Sie dazu festlegen, ob die tatsächliche Reihenfolge der Bytes im Speicher dargestellt werden soll (niederwertiges Byte zuerst), oder ob die lesefreundlichere Darstellung als vierstellige Hexadezimalzahl erfolgen soll.

Über die weiteren optionalen Parameter können Sie den Rückgabe-String gleich formatieren. Zum einen können Sie in Delimiter einen String angeben, der zwischen die Darstellung der einzelnen Zeichen eingefügt werden soll - etwa ein Leerzeichen. Zum anderen können Sie einen GroupDelimiter angeben, der die Abfolge in Gruppen zerteilt. Für eine zeilenweise Darstellung etwa können Sie hier eine Zeilentrennung angeben (vbCrLf). Damit können Sie eine Blockdarstellung für einen Hex-Betrachter formatieren. Der String "ABOUT Visual Basic" beispielweise sieht in der einfachen ANSI-Darstellung so aus:

41 42 4F 55 54 20 56 69
73 75 61 6C 20 42 61 73
69 63

Dazu die Unicode-Darstellung mit umgekehrter Reihung:

0041 0042 004F 0055 0054 0020 0056 0069
0073 0075 0061 006C 0020 0042 0061 0073
0069 0063

Die zweite Funktion HexStringToString bildet das Gegenstück dazu. Sie verwandelt einen solchen Hexzahlen-Strom wieder in einen lesbaren String zurück. Dabei entfernt sie auch vollständig die Formatierung. Sie müssen ihr dazu natürlich die entsprechenden Informationen wieder als Parameter übergeben.

Public Function HexStringToString(HexString As String, _
 Optional ByVal CharMode As HexStringConstants, _
 Optional ByVal ReverseOrder As Boolean = True, _
 Optional Delimiter As String, _
 Optional GroupDelimiter As String) As String

Die dritte Funktion HexDump liefert die hexadezimale Darstellung eines Speicherbereichs, dessen Startadresse Sie in Form eines Zeigers ("Pointers") und dessen Länge Sie als Anzahl der auszulesenden Bytes übergeben. Sie setzt auf der ersten Funktion StringToHexString auf und kopiert dazu den gewünschten Speicherbereich in einen String. Dieser wird dann als Unicode-String behandelt und die Ausgabe erfolgt in originaler Byte-Reihung. Auch hier können Sie die Ausgabe gleich passend formatieren lassen.

Public Function HexDump(ByVal Ptr As Long, _
 ByVal Bytes As Long, _
 Optional Delimiter As String, _
 Optional GroupDelimiter As String, _
 Optional ByVal CharsPerGroup As Long = 4) As String

Die im Parameter Ptr geforderten Zeiger auf die Startadresse erhalten Sie über die (nicht dokumentierten) Visual Basic-Funktionen ObjPtr, zu verwenden bei Objekt-Variablen, und VarPtr für alle übrigen Variablen. VarPtr verwenden Sie ebenfalls für Benutzerdefinierte Variablen ("UDTs") und für Arrays. Bei letzteren geben Sie den Zeiger auf das erste Element an, ab dem der Speicherbereich ausgelesen werden soll.

Ein paar Beispiele:

Debug.Print HexDump(ObjPtr(ObjektVariable), 16)
Debug.Print HexDump(VarPtr(LongZahl), 4)
Debug.Print HexDump(VarPtr(UDT), LenB(UDT))
Debug.Print HexDump(VarPtr(EinByteArray(0), 256)

Code der Funktionen Code der Funktionen

Modul modHexDump (modHexDump.bas - ca. 19 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer