Wie man ein Byte-Array in einen Hex-String in C# konvertiert: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bytes in Strings und zurück verwandeln: Die Magie des Hexadezimalcodes in C#

\n\n

Haben Sie sich jemals gefragt, wie ein Computer ein Bild, Musik oder einfach eine Textdatei sieht? All dies ist nur eine Folge von Bytes. Aber Bytes sind nicht sehr praktisch, um sie dem Benutzer anzuzeigen oder in einer URL zu übertragen. Hier kommt der Hex-String (hexadezimale Zeichenkette) ins Spiel – eine kompakte und lesbare Darstellung binärer Daten.

\n\n

Stellen Sie sich vor: Sie schreiben ein kryptografisches Modul, arbeiten mit Hashes, übertragen binäre Daten über JSON oder protokollieren den Inhalt eines Pakets. Und dann – zack! – müssen Sie ein Byte-Array in einen lesbaren String umwandeln. Oder umgekehrt, aus einem Hex-String die ursprünglichen Bytes wiederherstellen. Kommt Ihnen das bekannt vor? Diese Frage ist eine der beliebtesten auf Stack Overflow, und heute werden wir sie ein für alle Mal klären. Willkommen bei pythonlib.ru – Ihrem Leitfaden in der Welt der Programmierung.

\n\n

Warum überhaupt ein Byte-Array in einen Hex-String konvertieren?

\n\n

Kommen wir gleich zur Sache. Ein Byte-Array (byte[]) sind Rohdaten: Zahlen von 0 bis 255. Für Menschen sind sie schwer zu lesen, und in einigen textbasierten Protokollen (HTTP, JSON) können sie das Format sogar zerstören. Ein Hex-String löst beide Probleme:

\n\n
    \n
  • Kompaktheit: Ein Byte wird in zwei Zeichen umgewandelt (z.B. 255 → "FF").
  • \n
  • Sicherheit: Im String verbleiben nur sichere Zeichen (0-9, A-F).
  • \n
  • Bequemlichkeit: Hex-Strings lassen sich leicht kopieren, vergleichen und protokollieren.
  • \n
\n\n

Sie haben solche Strings sicherlich schon in MD5- oder SHA256-Hashes oder in Autorisierungstoken gesehen. Jetzt wissen Sie, wie das „unter der Haube“ funktioniert.

\n\n

Methode Nr. 1: Der Klassiker – BitConverter (einfach und schnell)

\n\n

Die beliebteste Methode in C# ist die Verwendung der integrierten Klasse BitConverter. Sie ist seit der ersten Version von .NET verfügbar und funktioniert ohne unnötigen Schnickschnack.

\n\n

Umwandlung byte[] → Hex-String

\n\n
byte[] data = { 0x0F, 0x1A, 0xFF, 0x00 };\nstring hexString = BitConverter.ToString(data);\nConsole.WriteLine(hexString); // Ausgabe: 0F-1A-FF-00
\n\n

Ganz einfach, oder? Aber es gibt einen Haken: Zwischen den Zeichenpaaren wird ein Bindestrich eingefügt. Wenn der Bindestrich stört, kann man ihn leicht entfernen:

\n\n
string hexString = BitConverter.ToString(data).Replace("-", "");\nConsole.WriteLine(hexString); // Ausgabe: 0F1AFF00
\n\n

Vorteile: minimaler Code, integrierte Methode, für Anfänger verständlich.
\nNachteile: überflüssiger Bindestrich (muss entfernt werden), geringe Speicherzuweisung für Zwischenstrings.

\n\n

Rückumwandlung: Hex-String → byte[]

\n\n

Die Rückwärtsoperation ist etwas kniffliger. BitConverter kann nur in eine Richtung. Aber wir geben nicht auf – wir schreiben einen einfachen Parser:

\n\n
public static byte[] HexStringToBytes(string hex)\n{\n    // Mögliche Bindestriche und Leerzeichen entfernen\n    hex = hex.Replace("-", "").Replace(" ", "");\n    int length = hex.Length;\n    byte[] bytes = new byte[length / 2];\n    for (int i = 0; i < length; i += 2)\n    {\n        bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);\n    }\n    return bytes;\n}\n\n// Verwendung:\nstring hex = "0F1AFF00";\nbyte[] result = HexStringToBytes(hex);\n// result: { 0x0F, 0x1A, 0xFF, 0x00 }
\n\n

Diese Methode verwendet Convert.ToByte mit der Basis 16 – zuverlässig und lesbar. Für große Arrays erzeugt Substring jedoch viele temporäre Strings. Für Produktionscode ist es besser, Span<T> oder eine Schleife mit Zeichenindizierung zu verwenden.

\n\n

Methode Nr. 2: Modern – Convert.ToHexString (.NET 5+)

\n\n

Ab .NET 5 hat Microsoft die lang erwartete Methode Convert.ToHexString hinzugefügt. Sie arbeitet schnell und ohne Bindestriche.

\n\n
byte[] data = { 0x0F, 0x1A, 0xFF, 0x00 };\nstring hexString = Convert.ToHexString(data);\nConsole.WriteLine(hexString); // Ausgabe: 0F1AFF00
\n\n

Wunderschön! Keine Bindestriche, kein Replace. Für die Rückwärtsoperation gibt es Co

Blogs

Buchempfehlungen