So verwenden Sie den Base16-Encoder
- Tippen oder fügen Sie Text in die Eingabe ein. Das Base16 erscheint schon während der Eingabe in der Ausgabe.
- Der Zeichensatz unter der Eingabe bestimmt, wie Zeichen zu Bytes werden. Standard ist UTF-8.
- Zum Dekodieren klicken Sie über dem Tool auf Base16 (RFC 4648) → Text oder auf die Schaltfläche ⇄ Tauschen, die außerdem die aktuelle Ausgabe in die Eingabe verschiebt. Kleingeschriebene Ziffern, Leerzeichen und Doppelpunkte in der Eingabe werden akzeptiert.
- Ausgabe kopieren oder das Ergebnis Herunterladen. Über die Menüs Von und Nach wechseln Sie zum Vergleich in andere Formate, etwa Base32 oder Base64.
Für Hex mit Trennzeichen, 0x-Präfixen oder Ausgabe in Kleinbuchstaben bietet Text in Hex die passenden Optionen.
Base16 und RFC 4648
RFC 4648 definiert Base64, Base32 und Base16 nebeneinander, und Base16 ist das einfachste der drei: Es kennt weder Padding noch Zeilenumbrüche noch eine Umgruppierung von Bits. Jedes Byte wird in zwei 4-Bit-Hälften geteilt, und jede Hälfte entspricht einem Zeichen. Die Testvektoren aus dem RFC selbst:
| Eingabe | Base16 |
|---|---|
| (leer) | (leer) |
f | 66 |
fo | 666F |
foo | 666F6F |
foob | 666F6F62 |
fooba | 666F6F6261 |
foobar | 666F6F626172 |
Die Ausgabe ist immer genau doppelt so lang wie die Anzahl der Bytes, deshalb braucht Base16 kein Padding-Zeichen. Base64 und Base32 fassen mehrere Bytes zu einem Block zusammen und müssen den letzten Block mit = auffüllen. Die RFC-Übersicht zeigt, wo jede dieser Kodierungen spezifiziert ist.
Base16, Base32 und Base64 im Vergleich
Die 12 Bytes von Hello, world in jeder Kodierung aus RFC 4648:
| Kodierung | Ausgabe | Länge |
|---|---|---|
| Base16 | 48656C6C6F2C20776F726C64 | 24 |
| Base32 | JBSWY3DPFQQHO33SNRSA==== | 24 (20 ohne Padding) |
| Base64 | SGVsbG8sIHdvcmxk | 16 |
Base16 tauscht Größe gegen Klarheit. Man kann die Bytes direkt ablesen und Werte Ziffer für Ziffer vergleichen, und es übersteht jedes System, das mit Buchstaben und Ziffern umgehen kann, auch solche ohne Unterscheidung der Schreibweise. Base64 ist ein Drittel kürzer und die Standardwahl, wenn die Bytes in JSON, E-Mails oder URLs reisen müssen. Der Vergleich der Kodierungen geht weiter und bezieht Base58 und Base85 ein.
Wo Ihnen Base16 begegnet
- Hash-Digests und Prüfsummen, von
sha256sumund ähnlichen Tools meist in Kleinbuchstaben ausgegeben. - Fingerabdrücke von OpenPGP-Schlüsseln, die GnuPG als Hex in Großbuchstaben in Vierergruppen ausgibt.
- Testvektoren in RFCs und anderen Spezifikationen, bei denen eindeutige Bytewerte wichtiger sind als die Länge.
- Protokolle und Formate, die Daten ohne Unterscheidung der Schreibweise oder rein alphanumerische Daten brauchen.
Um einen solchen Wert in Base64 zu überführen, etwa einen Digest, den eine API als Base64 erwartet, nutzen Sie Hex in Base64; Base64 in Hex geht den umgekehrten Weg.
Base16 im Code
import base64
base64.b16encode(b"Hello").decode() # '48656C6C6F'
base64.b16decode("48656c6c6f", casefold=True) # b'Hello'
printf 'Hello' | basenc --base16 # 48656C6C6F
echo 48656C6C6F | basenc --base16 -d # Hello
basenc gehört ab Version 8.31 zu GNU coreutils. In Node.js liefert Buffer.from("Hello").toString("hex").toUpperCase() dasselbe Ergebnis. Die Seiten zu Python und Bash behandeln die Base64-Seite dieser Module.
Häufige Fragen
Ist Base16 dasselbe wie Hexadezimal?
Ja, für Bytes. Base16 ist der Name, den RFC 4648 der Hex-Kodierung gibt: Jedes Byte wird zu zwei Zeichen aus 0123456789ABCDEF. Das RFC schreibt Großbuchstaben vor; im Alltag wird Hex oft kleingeschrieben.
Wie viel größer ist Base16 als die Originaldaten?
Genau doppelt so groß, also 100 % Overhead. Base32 fügt 60 % hinzu und Base64 etwa 33 %, damit ist Base16 die am wenigsten kompakte Kodierung aus RFC 4648 und die am leichtesten lesbare.
Warum lehnt Pythons b16decode meine Zeichenkette ab?
base64.b16decode akzeptiert standardmäßig nur Großbuchstaben. Übergeben Sie casefold=True für kleingeschriebene Eingaben oder nehmen Sie bytes.fromhex(), das beide Schreibweisen und Leerzeichen versteht.