yEnc kodieren und dekodieren
Kodiert „Hello Usenet“ als gerahmtes yEnc-Fragment mit =ybegin-Kopf und einer =yend-Zeile samt Prüfsumme 38A1E859 und dekodiert solche Fragmente wieder zu Text. Jedes Byte wird um 42 verschoben statt aufgebläht, daher bleibt der Mehraufwand weit unter Base64. 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
- Hello Usenet
- Berechnungsmodus
- Encode
- Name
- hello.bin
- Kodierung
- yenc
- Größe
- 12
- Crc32
- 38A1E859
- Gerade
- 128
Die Engine ist vollständig deterministisch: derselbe Text, derselbe Modus, derselbe Name und dieselbe Zeilenlänge erzeugen immer dasselbe Ergebnis, ohne Netzaufrufe, ohne Zufallssalze und ohne datumsabhängige Abkürzungen. Übliche Prüfungen umfassen das Kodieren von Hello Usenet in ein gerahmtes Artikelfragment und das Dekodieren dieses Fragments zurück zur Originalphrase.
Warum yEnc so wenig Platz braucht
Base64 macht aus je drei Bytes vier Zeichen, eine Datei wächst also um etwa ein Drittel. yEnc geht anders vor: Jedes Byte wird um 42 verschoben und als einzelnes Zeichen geschrieben, nur vier kritische Werte, Null, Zeilenvorschub, Wagenrücklauf und Gleichheitszeichen, erhalten ein Gleichheitszeichen und einen Zuschlag von 64. Weiche Zeilenumbrüche halten die Zeilen nahe der klassischen Breite von 128 Zeichen. Deshalb wurde yEnc zum üblichen Weg, Binärdaten in Usenet-Artikeln zu transportieren. Ihr Text wird vorher in UTF-8-Bytes umgewandelt, sodass Umlaute und andere Schriften unverändert zurückkommen.
Kopfzeile und Prüfsumme lesen
Ein kodiertes Fragment beginnt mit einer =ybegin-Zeile, die Größe, Zeilenlänge und Dateinamen nennt, und endet mit einer =yend-Zeile, die die Größe wiederholt und oft eine CRC-32-Prüfsumme anhängt. „Hello Usenet“ mit dem Namen hello.bin ergibt 12 Bytes Eingabe, ein gerahmtes Ergebnis von 85 Bytes und die Prüfsumme 38A1E859. Beim Dekodieren werden vollständige Fragmente ebenso angenommen wie ein bloßer Rumpf, was hilft, wenn ein Support-Ticket nur einen eingefügten Auszug enthält.
yEnc in Usenet, Binärdaten und Support
Frontend- und Support-Teams dekodieren yEnc-Schnipsel bei Ticket-Untersuchungen, ohne Daten in Ad-hoc-Skripte zu kleben, die kritische Escapes oder weiche Umbrüche falsch behandeln. Backend-Dienste kodieren kurze mehrsprachige Zeichenketten oder Konfigurationsproben in gerahmtes yEnc für Integrationstests, die Offset und Header-Layout eines echten Posters treffen müssen. Qualitätstechniker erzeugen deterministische encode- und decode-Paare für Vertragstests, damit eine Bibliothek mit behaupteter yEnc-Unterstützung Escape-Regeln, CRC-Polynome oder Header-Attributreihenfolge nicht still ändern kann, ohne Goldens zu brechen.
Kombinieren Sie es mit Base64- und quoted-printable-Helfern, wenn Sie verwandte Transferkodierungen brauchen, und mit anderen Textwerkzeugen, wenn Sie ein kleines Labor freier, deterministischer Kodierer aufbauen.
Anwendungsfälle
Debugging von Usenet-Artikeln
Kodieren oder dekodieren Sie yEnc-Artikelfragmente, damit size auf =ybegin, Körper-Escapes und CRC-32-Trailer dem entsprechen, was Newsreader erwarten.
Häufige Fragen
Was kostet der yEnc-Kodierer?
Er ist auf dieser Seite in Ihrem Browser kostenlos.
Worin unterscheidet sich yEnc von Base64?
yEnc verschiebt jedes Byte um 42 und escaped nur wenige kritische Werte, sodass der Overhead deutlich unter dem Vier-Zeichen-Alphabet von Base64 liegt. Es wurde für Usenet-Artikelkörper entworfen, nicht für E-Mail-MIME.
Was passiert bei einem fehlerhaften Escape oder CRC?
Unvollständige '='-Escapes, size-Abweichungen und CRC-32-Abweichungen werden abgelehnt statt geraten.
Ist das Ergebnis deterministisch?
Ja. Derselbe Text, Modus, Name und dieselbe Zeilenlänge erzeugen immer dasselbe Ergebnis, ohne Netz, Zufall oder datumsabhängiges Verhalten.
Welche Bytes maskiert yEnc?
Jedes Byte wird zuerst um 42 verschoben. Ist das Ergebnis einer von vier kritischen Werten, also Null, Zeilenvorschub, Wagenrücklauf oder Gleichheitszeichen, wird es als Gleichheitszeichen plus diesem Wert zuzüglich 64 geschrieben; alles andere bleibt ein einzelnes Zeichen.
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/yenc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello Usenet"}'const res = await fetch("https://api.kit.forhosting.com/enc/yenc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello Usenet"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/yenc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello Usenet"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/yenc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello Usenet"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello Usenet"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/yenc", 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": "Hello Usenet"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.yenc",
"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
Dieser yEnc-Kodierer wandelt reinen UTF-8-Text in das seit Langem auf Usenet genutzte Binärübertragungsformat mit geringem Overhead um und dekodiert gerahmte oder rohe yEnc-Payloads zurück zu lesbarem Text. yEnc behält fast jedes Oktett als einzelnes druckbares oder erweitertes Zeichen nach einem festen Offset von zweiundvierzig bei und escaped nur eine kleine kritische Menge, sodass Binärdaten in NNTP-Artikelkörpern mit weit weniger Aufblähung als Base64 reisen. Nutzen Sie es kostenlos im Browser für Usenet-Werkzeugpraxis und Artikel-Debugging, oder rufen Sie die API zu $0.002 pro erfolgreicher Anfrage auf, wenn Pipelines reproduzierbare yEnc-Transformationen in CI und Backend-Diensten brauchen.
Was yEnc ist und was dieses Werkzeug zurückgibt
yEnc ist eine Content-Transfer-artige Kodierung, damit Binärdateien in Usenet-Artikeln reisen können, ohne die Ein-Drittel-Größenstrafe von Base64. Jedes Eingabe-Byte wird um zweiundvierzig modulo zweihundertsechsundfünfzig verschoben; nur die kritischen Werte Null, Zeilenvorschub, Wagenrücklauf und Gleichheitszeichen werden escaped, indem ein Gleichheitszeichen vorangestellt und vor der Ausgabe vierundsechzig addiert wird. Wenn Sie opakes e-mail-sicheres Packen brauchen, bevorzugen Sie Base64- oder quoted-printable-Endpunkte; diese Landing gilt der usenet-orientierten yEnc-Kodierung, die News-Clients und Binär-Poster bereits erwarten. Kodierer fügen dann weiche Zeilenumbrüche ein, damit Artikelzeilen nahe der klassischen Breite von einhundertachtundzwanzig Zeichen bleiben, und rahmen den Körper mit einer =ybegin-Zeile, die size, optionale Zeilenlänge und einen Dateinamen trägt, plus einem =yend-Trailer, der oft size und eine IEEE-CRC-32-Prüfsumme enthält. Diese Seite folgt diesem Vertrag stets für UTF-8-Text: encode-Modus kodiert Ihre Zeichenkette in UTF-8, wendet Offset und kritische Escapes an, umbricht Zeilen und emittiert Header mit berechnetem CRC; decode-Modus entfernt Steuerzeilen, ignoriert CR und LF im Körper, kehrt Escapes um, prüft size und CRC wenn vorhanden und lehnt unvollständige Gleichheitssequenzen ab, statt zu raten. Die JSON-Antwort enthält result für die transformierte Zeichenkette, mode mit echo von encode oder decode, encoding fest auf yenc, size für die Binärpayload-Länge, optionale name und crc32, framed true wenn Header genutzt oder erkannt wurden, sowie input_bytes plus output_bytes, damit Sie Größen in Tests asserten können. Es gibt keinen Streaming-Pfad und keine stille Reparatur von kaputtem yEnc: entweder ist die Zeichenkette unter diesen Regeln gültig, oder die Anfrage scheitert mit invalid_input.
Wie text, mode, name und line gelesen werden und Ergebnisse reproduzierbar bleiben
Mode ist standardmäßig encode und akzeptiert decode explizit; Aliasse op, direction und action mappen denselben Schalter für Skripte, die diese Namen schon verwenden. Encode akzeptiert jede Unicode-Zeichenkette, wandelt sie mit dem Plattform-TextEncoder in UTF-8-Bytes und emittiert ein gerahmtes yEnc-Artikelfragment mit CRC-32 in Großbuchstaben. Nach der Byte-Wiederherstellung stellt eine fatale UTF-8-Dekodierung sicher, dass Binärmüll nicht zu Mojibake-Text wird. Das bevorzugte Payload-Feld ist text, mit Aliassen input, value und s, damit Formulare, Query-Strings und SDK-Clients denselben Vertrag ohne Umbenennen von Spalten nutzen. Optionales name (Aliasse filename, file) wird beim Kodieren auf die =ybegin-Zeile geschrieben und ist standardmäßig data.bin; es darf keine Wagenrückläufe, Zeilenvorschübe oder Gleichheitszeichen enthalten. Optionales line (Aliasse line_length, linewidth) setzt die Körper-Umbruchsbreite zwischen zweiunddreißig und fünfhundertzwölf Zeichen und ist standardmäßig einhundertachtundzwanzig, passend zur gängigen yEnc-Praxis. Decode akzeptiert gerahmten Text mit =ybegin und =yend oder einen reinen Körperstrom: ein unvollständiges Gleichheits-Escape am Ende, ein Gleichheitszeichen gefolgt von einem Zeilenumbruch, eine size-Abweichung zur dekodierten Bytezahl oder eine CRC-32-Abweichung scheitern mit einer klaren invalid_input-Meldung. Kombinieren Sie den kostenlosen Browserlauf auf dieser Seite mit der kostenpflichtigen API, wenn Sie dasselbe mathematische Ergebnis in einer automatisierten Pipeline brauchen, ohne yEnc-Tabellen selbst neu zu implementieren. Ungültige Eingaben liefern invalid_input und werden nicht berechnet, was Validierung günstig hält, während erfolgreiche Transformationen ein fester Stückpreis bleiben.
Wo yEnc in Usenet, Binärdaten und Test-Fixtures passt
Lehrende nutzen dasselbe Werkzeug, um den Unterschied zwischen Base64-Opazität und yEncs usenet-typischer Low-Overhead-Kodierung für vorwiegend binäre Payloads zu vermitteln. Auf dieser Seite läuft die Arbeit vollständig in Ihrem Browser; über die API kostet jede erfolgreiche Abfrage $0.002, fehlgeschlagene Validierung wird nicht berechnet, und nach der Antwort wird nichts gespeichert. Diese Aufteilung — kostenlose interaktive Erkundung und eine preislich identische API — entspricht dem restlichen KIT-Tier-A-Katalog und lässt Sie von einer Unterrichtsdemo zu einer automatisierten Pipeline wechseln, ohne das kodierte Ergebnis zu ändern.
Integrationsbeispiele
Erzeugung binärer Fixtures
Erzeugen Sie reproduzierbare gerahmte yEnc-Zeichenketten für Unit-Tests, Golden-Dateien und NNTP- oder Poster-Integrationsprüfungen.
Parser- und CRC-Validierung
Dekodieren Sie verdächtige Payloads, um unvollständige Escapes, size-Abweichungen und CRC-32-Fehler sichtbar zu machen, ohne zu raten.
Technische Fragen
Welche Modi werden unterstützt?
mode=encode (Standard) wandelt Klartext in gerahmtes yEnc mit =ybegin und =yend um. mode=decode wandelt eine yEnc-Zeichenkette (gerahmt oder nur Körper) zurück in UTF-8-Text.