hexDump()
Eine Zeichenkette als Hex-Dump ausgeben.
Syntax:
string |
hexDump ( text, address, addr_fw, dump_flags ) |
Parameter:
text |
Der Parameter wird mittels string() zwangsweise in eine Zeichenkette gewandelt und anschließend in einen Hex-Dump gewandelt. |
address |
Die virtuelle Adresse des ersten Zeichens, die im Hex-Dump ausgegeben wird.
Ist Bit _DUMP_NO_ADDR in dump_flags gesetzt, dann wird dieser Parameter ignoriert und es erfolgt keine Ausgabe der Adresse. |
addr_fw |
Die Mindest-Feldweite des Adressfeldes bei der Ausgabe. |
dump_flags |
Ein Bitfeld mit Optionen, die im Fließtext beschrieben sind.
Alternativ können die Flags auch im Textmodus übergeben werden. |
Beschreibung:
Die Zeichenkette text wird als Hex-Dump ausgegeben.
Dieser Hex-Dump hat grundsätzlich das folgende Aussehen:
1002: 44 69 65 73 65 73 20 69 73 74 20 65 69 6e 20 6b :Dieses ist ein k:
1012: 6c 65 69 6e 65 72 20 54 65 73 74 20 6d 69 74 20 :leiner Test mit :
1022: 64 65 72 20 46 75 6e 6b 74 69 6f 6e 20 68 65 78 :der Funktion hex:
1032: 44 75 6d 70 28 29 2e :Dump().:
Die folgenden Konstanten definieren, so weit nicht anders erwähnt,
einzelne Bits, können mittels OR-Operation ('|') miteinander verknüpft werden
und werden im Parameter dump_flags übergeben:
- _DUMP_REVERSE_ENDIAN
Diese Option gibt an, dass die Daten in für das lokale System
falschen Endian vorliegen.
Das Flag _DUMP_REVERSE_ENDIAN ist nur relevant, wenn mindestens eines der Flags
_DUMP_2BYTES, _DUMP_4BYTES oder _DUMP_8BYTES angegeben wurde.
- _DUMP_2BYTES
Anstatt jedes Byte einzeln auszugeben, werden jeweils 2 Bytes zu einem Wert
zusammengefasst. In diesem Falle gibt das Flag _DUMP_REVERSE_ENDIAN
den Endian der Werte an.
Ein einzelnes Byte am Ende der Eingabe wird einzeln dargestellt.
- _DUMP_4BYTES
Anstatt jedes Byte einzeln auszugeben, werden jeweils 4 Bytes zu einem Wert
zusammengefasst. In diesem Falle gibt das Flag _DUMP_REVERSE_ENDIAN
den Endian der Werte an.
Einzelne Bytes am Ende der Eingabe werden einzeln dargestellt.
_DUMP_4BYTES hat Vorrang vor _DUMP_2BYTES.
- _DUMP_8BYTES
Anstatt jedes Byte einzeln auszugeben, werden jeweils 8 Bytes zu einem Wert
zusammengefasst. In diesem Falle gibt das Flag _DUMP_REVERSE_ENDIAN
den Endian der Werte an.
Einzelne Bytes am Ende der Eingabe werden einzeln dargestellt.
_DUMP_8BYTES hat Vorrang vor _DUMP_2BYTES und _DUMP_4BYTES.
- _DUMP_TERM_CR
Am Ende einer Ausgabezeile wird das Zeichen CR ('\r', ASCII 13) ausgegeben.
Die Kombination mit _DUMP_TERM_LF ist möglich .
Die Ausgabe-Reihenfolge ist dann: CR,LF. (siehe auch _DUMP_TERM_CRLF)
- _DUMP_TERM_LF
Am Ende einer Ausgabezeile wird das Zeichen LF ('\n', ASCII 10) ausgegeben.
Die Kombination mit _DUMP_TERM_LF ist möglich .
Die Ausgabe-Reihenfolge ist dann: CR,LF. (siehe auch _DUMP_TERM_CRLF)
- _DUMP_TERM_CRLF := _DUMP_TERM_CR|_DUMP_TERM_LF
Am Ende einer Ausgabezeile werden die Zeichen CR+LF ('\r\n', ASCII 13 und 10) ausgegeben.
- _DUMP_TERM_NULL
Am Ende einer Ausgabezeile wird das Zeichen NULL ('\0', ASCII 0) ausgegeben.
Ist Flag _DUMP_TERM_NULL gesetzt, dann werden die beiden Flags
_DUMP_TERM_CR und _DUMP_TERM_LF ignoriert.
#!--------------------------
- _DUMP_NO_TEXT
Normalerweise werden am Zeilenende die Werte nochmals als ASCII-Block dargestellt,
wobei nicht druckbare Sonderzeichen durch einen Punkt ersetzt werden.
Durch _DUMP_NO_TEXT wird diese Ausgabe unterdrückt.
- _DUMP_NO_COLON
Normalerweise wird der ASCII-Block durch Doppelpunkte eingerahmt.
Durch _DUMP_NO_COLON wird die Ausgabe dieser Doppelpunkte unterdrückt.
- _DUMP_ONLY_ASCII_TEXT
Normalerweise werden Zeichen aus den Bereichen [0x20..0x7E] und [0xA0..0xFF]
im ASCII-Block direkt dargestellt, alle anderen Zeichen werden als Punkt ('.')
dargestellt. Durch die Verwendung von _DUMP_ONLY_ASCII_TEXT wird für die Zeichen
aus den Intervall [0xA0..0xFF] die Darstellung der Zeichen [0x20..0x7F] verwendet.
- _DUMP_NO_TEXT_ALIGN
Der ASCII-Block wird im Normalfall so weit ausgerückt, dass die ASCII-Blocks
mehrere Zeilen (bei Verwendung gleicher Optionen) untereinander stehen.
Durch die Verwendung von _DUMP_NO_TEXT_ALIGN erfolgt die Textausgabe direkt
hinter dem Hex-Dump. Diese Option zeigt nur Wirkung bei einzeiligen Ausgaben.
- _DUMP_NO_EXTRA_SPACE
Für den besseren Überblick wird alle 4 Spalten (bzw. 5 Spalten,
falls _DUMP_DECIMAL_ADDR gesetzt) ein zusätzliches Leerzeichen eingefügt.
Durch _DUMP_NO_EXTRA_SPACE wird dieses zusätzliches Leerzeichen unterdrückt.
- _DUMP_DOUBLE_WIDE
Normalerweise werden 16 Bytes (bzw. 10 Bytes, falls _DUMP_DECIMAL_ADDR gesetzt)
pro Zeile ausgegeben.
Durch _DUMP_DOUBLE_WIDE wird diese Anzahl auf 32 bzw. 20 Bytes verdoppelt.
- _DUMP_WHOLE_LINE
Normalerweise wird der Quell-Datenbereich wird bis zum letzten Byte ausgegeben,
auch wenn die letzte Zeile unvollsändig ist.
Durch das Flag _DUMP_WHOLE_LINE werden nur komplette Zeilen ausgegeben.
- _DUMP_SINGLE_LINE
Normalerweise wird der gesamte Quell-Datenbereich ausgegeben.
Durch das Flags _DUMP_SINGLE_LINE wird maximal (siehe auch _DUMP_WHOLE_LINE)
eine Zeile ausgegeben.
#!--------------------------
- _DUMP_ALIGN_2
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 2 ist.
- _DUMP_ALIGN_4
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 4 ist.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR gesetzt und
_DUMP_DOUBLE_WIDE nicht gesetzt ist.
- _DUMP_ALIGN_5
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 5 ist.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR nicht gesetzt ist.
- _DUMP_ALIGN_8
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 8 ist.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR gesetzt ist.
- _DUMP_ALIGN_10
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 10 ist.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR nicht gesetzt ist.
- _DUMP_ALIGN_16
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 16 ist.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR gesetzt ist.
- _DUMP_ALIGN_20
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 20 ist.
Sollte _DUMP_DOUBLE_WIDE nicht gesetzt sein,
dann wird ersatzweise _DUMP_ALIGN_10 verwendet.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR nicht gesetzt ist.
- _DUMP_ALIGN_32
Die erste Adresse wird so verkleinert, dass Sie ein Vielfaches von 32 ist.
Sollte _DUMP_DOUBLE_WIDE nicht gesetzt sein,
dann wird ersatzweise _DUMP_ALIGN_16 verwendet.
Diese Option wird ignoriert, wenn _DUMP_DECIMAL_ADDR gesetzt ist.
#!--------------------------
- _DUMP_NO_ADDR
Es wird keine Adresse mit ausgegeben. Alle _DUMP_ALIGN_* Optionen
sowie die Optionen _DUMP_FULL_ADDR und _DUMP_AUTO_ADDR_FW werden ignoriert.
- _DUMP_FULL_ADDR
Ist _DUMP_FULL_ADDR gesetzt, dann wird die Adresse mit acht
Hexadezimal-Stellen bzw. 10 Dezimalstellen ausgegeben.
Allerdings hat die Option _DUMP_NO_ADDR Vorrang.
Der Parameter addr_fw wird dann als Mindest-Feldweite interpretiert.
- _DUMP_AUTO_ADDR_FW
Die Feldweite der Adresse wird automatisch berechnet:
Sie ist mindestens so groß, wie für die Anzeige der letzten Zeile benötigt wird.
Der Parameter addr_fw wird dann als Mindest-Felweite interpretiert.
#!--------------------------
- _DUMP_DECIMAL_ADDR
Anstatt die Adressen in Hexadezimal auszugeben, werden sie in Dezimal ausgegeben.
Außerdem wird die Anzahl der Elemente pro Zeile von 16 auf 10 verringert,
wenn weder Flag _DUMP_4BYTES noch Flag _DUMP_8BYTES gesetzt ist.
- _DUMP_DECIMAL_VAL
Die Werte der einzelnen Bytes werden nicht als Hexadezimalzahl mit führenden
Nullen ausgegeben, sondern als 3-, 5-, 9- oder 18-stellige Dezimalzahl
mit führenden Leerzeichen und Tausender-Trennzeichen.
Die tatsächliche Anzahl der Stellen wird durch die Flags _DUMP_2BYTES,
_DUMP_4BYTES oder _DUMP_8BYTES festgelegt.
- _DUMP_GROUPING
Beim numerischen Dump des Datenbereiches werden jeweils 4 Ziffern zu einer
Zifferngruppe zusammengefasst und durch einen Doppelpunkt voneinander getrennt.
Ist Flag _DUMP_DECIMAL_VAL gesetzt, dann werden jeweils 3 Ziffern zu einer
Zifferngruppe zusammengefasst und durch einen Punkt voneinander getrennt.
#!--------------------------
- _DUMP_STD := _DUMP_TERM_LF | _DUMP_AUTO_ADDR_FW
Dieses ist der Standard-Wert, der verwendet wird,
wenn keine Optionen angegeben werden.
#!--------------------------
Funktionsergebnis: STRING
Als Funktionsergebnis wird eine Zeichenkette mit dem Hex-Dump ausgegeben.
Die Variable $RESULT2 enthält die Anzahl der Zeichen, die ausgewertet
und ausgegeben wurden. Die restlichen Zeichen, sofern vorhanden,
müssen in folgenden hexDump()-Aufrufen ausgegeben werden.
Gründe für die unvollständige Ausgabe sind die Optionen
_DUMP_WHOLE_LINE und _DUMP_SINGLE_LINE.
Weitere ähnliche Funktionen: