Skip to main content

Binary to Text

Convert text to binary and binary back to text.

Geprüft von · Zuletzt geprüft

Konvertierung zwischen rohen Bits und lesbarem Text

  1. Wähle eine Richtung mit den Modus-Tabs: "Text → Binär" kodiert deine eingegebenen Zeichen zu 0/1-Ziffern; "Binär → Text" kehrt den Vorgang um.
  2. Füge deine Eingabe ein oder tippe sie in das Eingabefeld. Im Textmodus wird jedes Unicode-Zeichen akzeptiert (Emoji, CJK, RTL). Im Binärmodus füge eine Folge von 0en und 1en ein, optional durch Leerzeichen getrennt; andere Zeichen werden entfernt.
  3. Schalte "Leerzeichengetrennte Bytes" um, um ein Leerzeichen zwischen jedem Byte-Chunk einzufügen (oder zu verlangen). So werden die meisten akademischen und Lehrbuchbeispiele formatiert (01001000 01101001).
  4. Schalte "8-Bit-Auffüllung" um, um das Binär jedes Zeichens auf genau 8 Bit aufzufüllen. Das Ausschalten erzeugt variable Breite für ASCII-Bereichszeichen (7 Bit), was Platz spart, aber die Mehrbyte-Kompatibilität bricht.
  5. Lies die Ausgabe, die live beim Tippen aktualisiert wird. Es ist kein Klicken einer Schaltfläche erforderlich - die Transformation läuft bei jedem Tastenanschlag über den onInput-Handler. Klicke die Kopierschaltfläche, um die Ausgabe in die Zwischenablage zu legen.

Unicode-Codepunkte, UTF-8-Bytes und warum sie sich unterscheiden

Der Text-zu-Binär-Pfad ruft codePointAt(0).toString(2) für jedes Zeichen auf. Das unterscheidet sich subtil von UTF-8: Es erzeugt den rohen Unicode-Skalarwert, sodass "A" (U+0041) zu 01000001 wird und das Emoji "😀" (U+1F600) ein 17-Bit-Wert wird. Echtes UTF-8 würde dieses Emoji als 4 Bytes kodieren. Die Darstellung dieses Werkzeugs ist näher an UCS-2-Code-Units als an Wire-Format-UTF-8, gut für Lehr-Demos und passend zu den meisten "Binär-zu-Text"-Werkzeugen. Für die eigentliche UTF-8-Byte-Ausgabe (Netzwerkprotokoll-Debugging) führe zuerst durch new TextEncoder().encode(str) - den Pfad, den die Hashing- und HMAC-Werkzeuge auf dieser Seite verwenden. Das Dekodieren kehrt den Vorgang um: in Blöcke aufteilen, parseInt(chunk, 2), String.fromCodePoint.

Wann du dieses Werkzeug tatsächlich benötigst

  • CTF-Aufgaben (Capture The Flag) lösen, bei denen die Flagge als Binärziffern in einem Bild oder einer Textdatei versteckt ist.
  • Einem Studenten erklären, wie ASCII oder Unicode Zeichen auf Zahlen abbildet - das Umschalten der 8-Bit-Auffüllung zeigt die mit Nullen aufgefüllten Byte-Grenzen, die im Speicherlayout wichtig sind.
  • Ein Protokoll debuggen, bei dem Bytes als Einsen und Nullen protokolliert werden (selten in modernen Stacks, aber häufig in Legacy-Telekommunikation oder RS-232-Serien-Dumps).
  • Eine Rätsel- oder Rätselinhalt vorbereiten: einen Satz kodieren, den Binär-String senden, der Empfänger dekodiert ihn mit demselben Werkzeug.
  • Überprüfen, ob eine Bitmanipulationsfunktion in deinem Code das erwartete Binär für ein bekanntes Eingabezeichen erzeugt.
  • Einen Binär-String aus einem Eingebetteten-Systeme-Datenblatt-Beispiel in menschenlesbaren Text umwandeln, um zu überprüfen, ob du die Kodierung verstanden hast.

Fallstricke beim Hin-und-Rück-Reisen durch Binär

Der häufigste Fehler sind nicht übereinstimmende Auffüllungseinstellungen zwischen Kodierung und Dekodierung. Wenn du "Hi" mit eingeschalteter 8-Bit-Auffüllung kodierst, erhältst du 0100100001101001; wenn du denselben String mit ausgeschalteter Auffüllung (7-Bit-Blöcke erwartet) dekodierst, teilt das Werkzeug ihn als 0100100 0011010 01 auf und erzeugt Unsinn. Beide Seiten müssen sich auf die Blockgröße einigen. Zweitens belegen Nicht-BMP-Unicode-Zeichen (Emoji, CJK-Erweiterungen) zwei UTF-16-Code-Units oder einen einzigen Codepunkt über U+FFFF; dieses Werkzeug liest [...text], was nach Codepunkt iteriert, sodass Emoji korrekt hin-und-zurück-kodiert werden, aber eine handgeschriebene Schleife mit text[i] würde ein Surrogatpaar aufteilen und fehlerhafte Ausgabe erzeugen. Drittens verwirft der Binär-zu-Text-Pfad silent Nicht-01-Zeichen über .replace(/[^01\\s]/g, ''), was nachsichtig, aber bedeutet, dass ein Tippfehler wie "01001oo01" ohne Beschwerde zu "0100101" bereinigt wird. Viertens wird ein Block, der Codepunkt 0 (ein Null-Zeichen) repräsentiert, aus der Ausgabe verworfen, um die Anzeige mit unsichtbaren Nullen zu vermeiden; das ist eine absichtliche Abweichung vom strikten verlustfreien Hin-und-Zurück-Reisen.

Die breitere Binär-zu-Text-Kodierungslandschaft

Reines Binär ist pädagogisch, aber ineffizient - 8 Zeichen pro Byte. Echte Protokolle verwenden dichtere Kodierungen. Base64 (RFC 4648 Abschnitt 4) packt 3 Bytes in 4 Zeichen mit A-Z, a-z, 0-9, +, /; URL-sicheres Base64 (Abschnitt 5) tauscht + und / gegen - und _ aus. Base32 (Abschnitt 6) verwendet A-Z plus 2-7, ohne Beachtung von Groß-/Kleinschreibung und ohne 0/O/1/I-Verwechslung - verwendet für TOTP-Geheimnisse und BIP-39. Ascii85 (PDF-Streams) packt 4 Bytes in 5 Zeichen für 25 Prozent bessere Dichte als Base64. Z85 ist eine URL-sichere Ascii85-Variante. Quoted-Printable (RFC 2045) kodiert nur Nicht-ASCII als =XX-Hex, sodass der meiste E-Mail-Text lesbar bleibt. Hexadezimal ist Basis 16. Jedes tauscht Dichte gegen Alphabet-Sicherheit.

Binär vs. Base64, xxd und System-Werkzeuge

Unter Unix erzeugt echo "Hi" | xxd -b die Binärdarstellung jedes Bytes (00101001 01001000 01101001...) und ist das nächste CLI-Äquivalent. xxd ohne Flags gibt Hex aus; base64 dateiname erzeugt Base64; od -An -tb dateiname erzeugt oktales Binär. All diese verarbeiten beliebig große Dateien und streamen von der Festplatte. Der Vorteil dieses Werkzeugs ist die interaktive Live-Vorschau und das Ausführen in einem Browser-Tab. Sein Nachteil ist konzeptionell: Das Text-zu-Binär hier bildet auf Codepunkte ab, nicht auf Wire-Format-UTF-8-Bytes, sodass ein byte-genaues Debug-Dump xxd -b oder ein ähnliches natives Werkzeug verwenden sollte. Für echte UTF-8-Bytes verwende die Hash-Generator-Werkzeuge auf dieser Seite (die Text vor dem Hashing in UTF-8 kodieren) oder verwende new TextEncoder().encode(str) in Nodes REPL. Die eigenen Base64-, Base32- und URL-Encoder-Werkzeuge auf dieser Seite decken die anderen Einträge in der Kodierungslandschaft ab.

Häufig gestellte Fragen

Erzeugt das Werkzeug echtes UTF-8-Binär oder Unicode-Codepunkt-Binär?

Unicode-Codepunkt-Binär, nicht das UTF-8-Übertragungsformat. Der Buchstabe "A" (U+0041) ergibt in beiden Darstellungen 01000001, weil ASCII eine Teilmenge von Unicode ist. Für Zeichen oberhalb von U+007F unterscheiden sie sich: U+00E9 ("e mit Akut") ist in diesem Werkzeug Codepunkt 11101001 (8 Bit), die UTF-8-Bytefolge lautet jedoch 11000011 10101001 (16 Bit). Für byte-genaue Netzwerkprotokoll-Arbeit verwende ein Hex- oder UTF-8-spezifisches Werkzeug; dieses Werkzeug richtet sich an den Lehrfall, der zeigt, wie Zeichen auf numerische Codepunkte im Binärformat abgebildet werden.

Wird mein Text gespeichert oder irgendwo gesendet?

Nein. Das Werkzeug läuft im Browser mithilfe der JavaScript-String-Methoden und einer einfachen Konvertierungsroutine. Es gibt keinen Fetch-Aufruf, kein WebSocket, kein Analyseereignis mit deinem Text und keine localStorage-Persistenz. Du kannst ein Passwort oder ein privates Dokument in das Eingabefeld eingeben und im DevTools-Netzwerk-Tab beobachten - es werden null Anfragen gesendet. Beim Schließen des Tabs wird der Status gelöscht.

Warum unterscheidet sich meine dekodierte Ausgabe von dem, was ich kodiert habe?

Nicht übereinstimmende Einstellungen zwischen Kodierung und Dekodierung. Die häufigste Ursache ist der 8-Bit-Auffüllungs-Schalter: Wenn du ohne Auffüllung kodierst, werden ASCII-Zeichen zu 7-Bit-Blöcken (1000001 für A), aber das Dekodieren mit eingeschalteter 8-Bit-Auffüllung teilt den Datenstrom in 8-Bit-Gruppen und erzeugt Datenmüll. Setze Auffüllung und Leerzeichentrennung auf beiden Seiten gleich. Die zweite Ursache ist das Einfügen von Binärcode, der von einem anderen Werkzeug erzeugt wurde, das das UTF-8-Übertragungsformat statt Codepunkte verwendet - die Blockgrenzen stimmen dann nicht überein.

Kann ich Binärcode mit zusätzlichen Leerzeichen oder Zeilenumbrüchen dekodieren?

Ja. Die Binär-zu-Text-Funktion entfernt mit einem regulären Ausdruck alle Nicht-Ziffern-Whitespace-Zeichen und teilt dann bei Leerzeichen, wenn die Leerzeichentrennung aktiviert ist. Zeilenumbrüche, Tabulatoren und mehrere Leerzeichen zwischen Gruppen werden behandelt. Nicht-binäre Zeichen (Buchstaben, Satzzeichen) werden still verworfen, was praktisch ist, aber Tippfehler verbergen kann - wenn du "10O01" einfügst und eins-null-null-null-eins meinst, bereinigt das Werkzeug es zu "1001", was ein anderer Wert ist.

Wie werden Emoji und CJK-Zeichen behandelt?

Emoji in der Grundlegenden Mehrzähligen Ebene haben Codepunkte bis U+FFFF; Emoji oberhalb (die meisten modernen Gesichter, Flaggen) gehen bis U+10FFFF und erzeugen bis zu 21 Bit. CJK-Zeichen in der BMP sind 15-16 Bit pro Zeichen. Der Text wird mit [...text] iteriert, was Surrogatpaare beachtet, sodass die Hin-und-Rück-Kodierung alle diese Zeichen beibehält. Für byte-genaue UTF-8-Analyse verwende stattdessen ein Hex-Dump-Werkzeug.

Warum wird das Null-Byte beim Dekodieren verworfen?

Ein Block aus lauter Nullen repräsentiert Codepunkt 0 (U+0000 NULL), der unsichtbar dargestellt wird und häufig Terminals und HTML beschädigt. Der Dekodierer prüft auf Null und gibt nichts aus, um verwirrende Ausgaben zu vermeiden. Wenn du einen Binärstrom dekodierst, der legitim Null-Bytes enthält (eingebettete Systemdatenblätter, serialisierte C-Strings), verliert dieses Werkzeug sie still; verwende für diese Aufgabe ein hexadezimalorientiertes Werkzeug.

Unterstützt dieses Werkzeug Base64 oder Base32?

Nein - das sind andere Kodierungen, die von eigenen Werkzeugen auf dieser Seite abgedeckt werden. Base64 (RFC 4648 Abschnitt 4) bildet 3 Bytes auf 4 Zeichen ab, die A-Z, a-z, 0-9, +, / verwenden; Base32 (RFC 4648 Abschnitt 6) bildet 5 Bytes auf 8 Zeichen ab, die A-Z und 2-7 verwenden. Beide sind dichter als rohe Binärdaten. Verwende die Base64- und Base32-Werkzeuge auf dieser Seite dafür; diese Seite ist für die Konvertierung zwischen Text und wörtlichen Binärziffern gedacht.

Kann ich Binärcode aus einer CTF-Aufgabe einfügen und die Flagge erhalten?

Oft ja. CTF-Flaggenkodierung mit durch Leerzeichen getrennten 8-Bit-Binären ist eine der häufigsten Anfängeraufgaben, und dieses Werkzeug dekodiert sie direkt. Stelle den Modus auf "Binär zu Text", aktiviere 8-Bit-Auffüllung und Leerzeichentrennung je nach Bedarf, füge das Binär ein und lese den dekodierten Text. Wenn die Flagge UTF-8-kodiert ist (Nicht-ASCII-Zeichen), kann die dekodierte Ausgabe kryptisch aussehen, weil das Werkzeug Codepunkte und nicht UTF-8-Bytes dekodiert; versuche in diesem Fall, das Binär in 8-Bit-Gruppen aufzuteilen und einen UTF-8-fähigen Dekodierer zu verwenden.

Mehr Text Tools