UTF-16-Code-Unit-Konverter
Aus Hi wird 00480069 in Big-Endian-Reihenfolge, also zwei Codeeinheiten und 4 Bytes. In Little-Endian wird das H stattdessen zu 48 00. Fügen Sie einen Hexdump ein, um ihn als Text zu lesen; kaputte Surrogatpaare werden abgelehnt. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- Hi
- Berechnungsmodus
- Encode
- Byte-Reihenfolge
- Be
- Ergebnis
- 00480069
- Codeeinheiten
- 2
- Bytes
- 4
UTF-16 ist nach wie vor das Draht- und Speicherformat hinter Windows-APIs, vielen Binärprotokollen, den String-Interna von JavaScript und Austauschformaten, die in 16-Bit-Code-Units statt in rohen UTF-8-Bytes sprechen. Dieses Werkzeug wandelt Klartext in einen fortlaufenden Hex-Dump dieser Code-Units um — oder umgekehrt — und Sie wählen dabei für jede Einheit ein Big-Endian- oder Little-Endian-Layout.
Was eine UTF-16-Code-Unit ist und warum Hex hilft
Ein Unicode-Skalarwert in der Basic Multilingual Plane passt in eine einzige 16-Bit-Code-Unit. Zeichen außerhalb dieser Ebene — Emoji, viele historische Schriften und seltene Symbole — nutzen ein Surrogatpaar: ein High-Surrogat im Bereich U+D800–U+DBFF gefolgt von einem Low-Surrogat in U+DC00–U+DFFF. Beim Debuggen eines Protokoll-Dumps, einer Zwischenablage-Nutzlast oder einer falsch getaggten Datei heißt es oft, diese Einheiten als Hexadezimal zu lesen, statt zu raten, welches Byte welches ist.
Das Codieren wandelt Ihren Text in fortlaufendes Hex in Großbuchstaben, sodass je zwei Hexziffern ein Byte und je vier Ziffern eine Code-Unit unter der gewählten Endianness sind. Das Decodieren kehrt diesen Pfad um: Leerraum, Doppelpunkte, Unterstriche und Bindestriche in der Hex-Zeichenkette werden ignoriert, sodass Sie Dumps aus Logzeilen oder Paketmitschnitten ohne separaten Bereinigungsschritt einfügen können. Die Antwort meldet stets, wie viele Code-Units und Bytes erzeugt wurden, was den Vergleich mit einem Längenfeld in einer Binärspezifikation erleichtert.
Weil die Umwandlung reine lokale Parse-Arbeit ist, liefern gleiche Eingaben stets gleiche Ausgaben ohne Modell-Drift und ohne Netzabhängigkeit.
Endianness, Moduswahl und Wohlgeformtheitsregeln
Der Modus ist standardmäßig encode: Sie liefern Klartext und erhalten Hex. Wechseln Sie den Modus zu decode, wenn die Eingabe bereits eine Hex-Darstellung von UTF-16-Bytes ist. Endian ist standardmäßig be (Big-Endian), sodass aus U+0048 das Bytepaar 00 48 wird; wählen Sie le für Little-Endian 48 00, das vielen Windows- und ARM-Speicherlayouts entspricht.
Die Endianness gilt für jede Code-Unit einzeln; es gibt kein automatisches BOM-Präfix und keine Entfernung — brauchen Sie ein BOM, fügen Sie das bekannte FEFF-Muster selbst als explizite Einheiten hinzu oder entfernen es. Decode verlangt nach der Bereinigung eine Hex-Länge, die ein Vielfaches von vier ist, denn jede Code-Unit besteht aus zwei Bytes. Sowohl beim Codieren als auch beim Decodieren wird der Strom auf ungepaarte Surrogate geprüft: eine High-Einheit ohne folgende Low-Einheit, eine Low-Einheit ohne vorangehende High-Einheit oder ein abgeschnittenes Paar am Ende der Eingabe scheitern alle.
Diese Regel verhindert stille Korruption, wenn ein Dump mitten in einem Zeichen abgeschnitten wurde oder eine Zeichenkette bereits ein einzelnes Surrogat enthielt. Ungültige mode- oder endian-Werte scheitern ebenfalls sofort mit einer feldspezifischen Meldung, sodass Clients die Anfrage ohne Raten korrigieren können.
Wo man es ausführt und wie die Preisgestaltung funktioniert
Für eine einmalige Inspektion — das Lesen eines UTF-16LE-Dumps aus einem Windows-Registry-Export, das Prüfen, wie sich ein Emoji in zwei Code-Units ausdehnt, oder das Bestätigen, dass das Big-Endian-Hex eines Partners zu Ihrem Text passt — nutzen Sie das gratis Werkzeug im Browser. Setzen Sie den Aufruf in ein Reverse-Engineering-Notebook, in einen QA-Prüfstand, der Drahtformat-Gleichheit sicherstellt, oder in einen Support-Ablauf, in dem Kunden Hex einfügen und Sie die lesbare Zeichenkette brauchen, ohne einen Hex-Editor zu öffnen.
Weil die Funktion Tier-A-Parse-Arbeit ist, bleibt die Latenz gering und es gibt keine Container- oder Modellkosten, die nach jedem Deploy neu zu messen wären.
Anwendungsfälle
Support und Reverse Engineering
Decodieren Sie von Kunden gelieferte UTF-16-Hex-Dumps zurück in lesbaren Text und weisen Sie abgeschnittene oder ungepaarte Surrogat-Ströme ab.
Häufige Fragen
Was ist der Unterschied zwischen be und le?
be (Big-Endian) speichert in jeder 16-Bit-Einheit das höherwertige Byte zuerst; le (Little-Endian) speichert das niederwertige Byte zuerst. Wählen Sie das Layout, das Ihr Zielformat erwartet.
Was passiert bei einem ungepaarten Surrogat?
Es wird kein Teil-Hex oder -Text zurückgegeben, und der gescheiterte Aufruf wird nicht berechnet.
Kann ich Hex mit Leerzeichen oder Doppelpunkten einfügen?
Ja, im Modus decode. Leerzeichen, Unterstriche, Doppelpunkte und Bindestriche werden vor dem Parsen entfernt. Die verbleibenden Ziffern müssen vollständige Zwei-Byte-Code-Units bilden.
Wie sieht ein Emoji in UTF-16 aus?
Es belegt zwei Codeeinheiten, ein sogenanntes Surrogatpaar: eine hohe Hälfte zwischen D800 und DBFF, gefolgt von einer niedrigen zwischen DC00 und DFFF. Das Hex zeigt also zwei Einheiten für ein sichtbares Zeichen, und beide Hälften müssen zusammenbleiben.
Fügt das Werkzeug eine Byte-Order-Markierung hinzu?
Nein. Beim Kodieren wird am Anfang nichts ergänzt, beim Dekodieren nichts entfernt. Braucht Ihre Datei oder Ihr Protokoll die Markierung FEFF, fügen Sie sie selbst als eigene Einheit hinzu oder entfernen sie vor dem Einfügen aus dem Dump.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/enc/utf16 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi"}'const res = await fetch("https://api.kit.forhosting.com/enc/utf16", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hi"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/utf16",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hi"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/utf16", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hi"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hi"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/utf16", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "Hi"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.utf16",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Surrogatpaare für Zeichen außerhalb der Basic Multilingual Plane bleiben unversehrt; ein ungepaartes High- oder Low-Surrogat scheitert mit einem klaren invalid_input-Fehler, statt mehrdeutige Bytes zu erzeugen. Derselbe deterministische Pfad treibt das gratis Browser-Formular und die API zu $0.002 pro erfolgreicher Anfrage an.
Wo man es ausführt und wie die Preisgestaltung funktioniert
Jeder erfolgreiche API-Aufruf kostet $0.002; eine gescheiterte Validierung, einschließlich ungepaarter Surrogate und fehlerhaften Hex, wird nicht berechnet, sodass das Erproben fehlerhafter Dumps kein vorausbezahltes Guthaben aufzehrt. Die Antworten sind deterministisches JSON mit dem umgewandelten Ergebnis, dem aufgelösten mode und endian sowie den Zählungen von Code-Units und Bytes.
Integrationsbeispiele
Debugging von Protokollen und Binärformaten
Wandeln Sie menschlichen Text in Big- oder Little-Endian-UTF-16-Hex, um ihn mit Paketmitschnitten, Windows-API-Puffern oder Spezifikationsbeispielen zu vergleichen.
Erzeugung von Fixtures und Testdaten
Erzeugen Sie deterministische Hex-Fixtures für Unit-Tests, die Codierungslänge, Surrogatpaare und endian-spezifische Layouts sicherstellen.
Technische Fragen
Was liefert der Modus encode zurück?
Fortlaufendes Hex in Großbuchstaben der UTF-16-Bytes Ihres Textes unter der gewählten Endianness, plus die Zählungen code_units und bytes. Es wird kein BOM automatisch hinzugefügt.
Wie viel kostet die API?
$0.002 pro erfolgreicher Anfrage. Das Browser-Werkzeug ist gratis. Ungültige Eingaben werden nicht berechnet.