Delphi/Lazarus: Byte Array als String aus HEX-Werten anzeigen
Tipp von Stefan Trost | Letztes Update am 18.02.2023 | Erstellt am 02.02.2014
Bei der Arbeit mit Byte-Arrays stellt sich früher oder später die Frage nach einer Visualisierung. Hier bietet es sich an, die einzelnen Bytes in hexadezimaler Form als String auszugeben, um diesen String dann zum Beispiel in einem Memo-Feld oder über eine Meldung dem Nutzer anzuzeigen. In diesem Tutorial möchte ich euch eine Funktion zeigen, die genau dies macht.
Wir benutzen in dem Beispiel die folgende Definition eines Byte-Arrays:
type TByteArr = array of Byte;
Funktion zur Umwandlung von Byte-Arrays in Hex-Strings
Zur Visualisierung von Byte-Arrays dieses Typs in einen String nutzen wir die folgende Funktion. Die Funktion geht den als ersten Parameter übergebenen Byte-Array Byte für Byte durch und wandelt jeden einzelnen Byte-Wert in seinen entsprechenden hexadezimalen Wert um:
function ByteArrayToHexString(AByteArray: TByteArr; ASep: string = ''): string; var i, k: integer; begin result := ''; if ASep = '' then begin for i := low(AByteArray) to high(AByteArray) do result := result + IntToHex(AByteArray[i], 2); end else begin k := high(AByteArray); for i := low(AByteArray) to k do begin result := result + IntToHex(AByteArray[i], 2); if k <> i then result := result + ASep; end; end; end;
Die Funktion kann entweder nur mit einem Byte-Array aufgerufen werden oder optional mit einem Trennzeichen als zweiten Parameter, das zwischen die einzelnen Bytes zur besseren Übersichtlichkeit und Lesbarkeit geschrieben wird. Diesen Separator haben wir in der Funktion per Default auf einen leeren String gesetzt, so dass bei einem Aufruf der Funktion mit nur einem Parameter kein Trennzeichen zwischen die einzelnen Bytes geschrieben wird.
Beispielaufruf der Funktion
Schauen wir uns ein Beispiel an, wie wir die vorgestellte Funktion nutzen können:
var BA: TByteArr; s: string; begin SetLength(BA, 4); BA[0] := 65; BA[1] := $41; BA[2] := %1000001; // geht nur in Lazarus BA[3] := ord('A'); s := ByteArrayToHexString(BA); // 41414141 s := ByteArrayToHexString(BA, ' '); // 41 41 41 41 end;
In diesem Beispiel erstellen wir uns zunächst einen Byte-Array, der 4 Bytes lang ist und füllen diesen anschließend mit einigen Werten. Danach benutzen wir unsere Funktion, um diese Werte auszugeben.
Auch wenn wir den einzelnen Array-Elementen "verschiedene" Werte zugewiesen haben, steht jedes Element des Arrays nach der Befüllung auf dem gleichen Wert. Wir haben den hexadezimalen Wert "41" lediglich in verschiedenen Schreibweisen notiert: einmal als dezimalen Wert (65), einmal als binären Wert (1000001) und einmal über den Aufruf der Funktion ord('A'), die uns den ASCII-Wert des Buchstabens "A" liefert, der ebenfalls 65 beziehungsweise #41 ist.
Byte Array laden und speichern
In diesem Zusammenhang ist auch interessant, wie man einen Byte Array aus einer Datei laden oder speichern kann. Mehr dazu erfahrt ihr in dem verlinkten Tutorial, das Funktionen und Beispiele für beide Fälle zeigt.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
Lazarus: Datei als Byte-Array laden und Byte-Array als Datei speichern
Tutorial | 0 Kommentare
JavaScript: Arrays erstellen und nutzen
Info | 0 Kommentare
PHP: Alle leeren Elemente aus String-Array entfernen
Tipp | 0 Kommentare
PHP: Formular-Eingaben als Array an PHP Skript schicken
Tipp | 0 Kommentare
PHP: Array in Einzelvariablen schreiben
Tutorial | 0 Kommentare
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
MySQL: Zeilenumbrüche in MySQL
Tipp | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.