Werkzeug zur Lauflängencodierung und -decodierung
„aaabbcccc“ wird zu „a3b2c4“ codiert, und das Decodieren von „a3b2c4“ liefert wieder „aaabbcccc“, Buchstabe für Buchstabe. Ziffern und Backslashes werden maskiert, damit jedes Ergebnis eindeutig lesbar bleibt, und jedes Unicode-Zeichen funktioniert. 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
- aaabbcccc
- Berechnungsmodus
- Encode
- Ergebnis
- a3b2c4
Die Lauflängencodierung ersetzt aufeinanderfolgende Wiederholungen eines Zeichens durch dieses Zeichen und die Anzahl seiner Vorkommen. Dieses Werkzeug führt die Umwandlung in beide Richtungen aus: Wählen Sie Codieren für normalen Text oder Decodieren für einen bereits codierten Wert. Unicode-Zeichen werden unterstützt, ihre Reihenfolge bleibt vollständig erhalten, und eine einfache Escape-Regel ermöglicht eine eindeutige Rückwandlung von Ziffern und umgekehrten Schrägstrichen. Das Ergebnis ist deterministisch und entsteht ohne Netzwerkzugriff, Zufall, Speicherung oder Interpretation durch ein Sprachmodell.
Codieren Sie aufeinanderfolgende Läufe in unveränderter Reihenfolge
Wählen Sie den Codiermodus und geben Sie den Ausgangsinhalt in das Textfeld ein. Der Codierer liest Unicode-Zeichen von links nach rechts, fasst ausschließlich gleiche benachbarte Zeichen zusammen und schreibt jede Gruppe als Zeichen mit anschließender Dezimalzahl. Ein Block aus drei gleichen Buchstaben wird beispielsweise zu diesem Buchstaben und der Zahl drei.
Gleiche Zeichen, zwischen denen ein anderes Zeichen steht, bleiben getrennte Läufe, denn die Lauflängencodierung beschreibt lokale Wiederholungen und nicht die Gesamthäufigkeit. Eine leere Eingabe liefert ein leeres Ergebnis; ein einzelnes Zeichen erhält die Anzahl eins. Ziffern und umgekehrte Schrägstriche benötigen eine Sonderbehandlung, weil die Anzahlen ebenfalls aus Ziffern bestehen.
Deshalb setzt das Format vor eine wörtliche Ziffer oder einen wörtlichen umgekehrten Schrägstrich einen umgekehrten Schrägstrich und fügt danach die Anzahl an. Die Antwort enthält den gewählten Modus und das Ergebnis.
Decodieren Sie mit strenger Formatprüfung
Wählen Sie den Decodiermodus, wenn der Text bereits RLE-Elemente enthält. Jedes Element muss genau eine Zeichendarstellung und danach eine positive Dezimalzahl enthalten. Gewöhnliche Zeichen, die keine Ziffern sind, brauchen kein Präfix.
Einer wörtlichen Ziffer oder einem wörtlichen umgekehrten Schrägstrich muss ein umgekehrter Schrägstrich vorangestellt werden, damit sich die Nutzdaten von der folgenden Anzahl unterscheiden lassen. Anzahlen dürfen weder null sein noch mit null beginnen oder die sichere Ganzzahlgenauigkeit von JavaScript überschreiten. Der Decoder weist außerdem eine nicht maskierte Ziffer am Elementanfang, einen alleinstehenden abschließenden Schrägstrich, eine unbekannte Escape-Sequenz oder ein Zeichen ohne Anzahl zurück.
Die decodierte Ausgabe ist auf eine Million Unicode-Zeichen, die Eingabe auf einhunderttausend Zeichen begrenzt, damit eine riesige Anzahl nicht übermäßig viel Speicher belegt.
Verwenden Sie RLE bei bedeutsamen Wiederholungen
Die Lauflängencodierung ist eine umkehrbare Darstellung und kein universelles Kompressionsverfahren. Besonders geeignet ist sie für Daten mit langen ununterbrochenen Wiederholungen, etwa einfache Masken, wiederholte Statusmarkierungen, Rasterzeilen, Testmuster oder einführende Kompressionsübungen. Wechselnde Zeichen oder überwiegend einzigartige Zeichen können den Text verlängern, weil jeder Lauf eine Anzahl enthält; das Werkzeug verschweigt diesen Nachteil nicht und wählt auch nicht automatisch ein anderes Verfahren.
Bewahren Sie in Produktionsabläufen das Ergebnis zusammen mit der Dokumentation dieser Escape-Konvention auf, da andere Implementierungen Trennzeichen, Klammern oder vorangestellte Anzahlen verwenden können. Unicode wird nach Codepunkten verarbeitet, sodass übliche Emoji jeweils als einzelnes Zeichen gelten.
Anwendungsfälle
Einen grundlegenden Kompressionsalgorithmus erklären
Zeigen Sie, wie benachbarte Läufe zu Zeichen-Anzahl-Elementen werden, und stellen Sie anschließend den Inhalt wieder her.
Kompakte, repetitive Testdaten erzeugen
Stellen Sie lange Läufe in Masken, Rasterzeilen, Statuswerten oder synthetischen Daten durch eine kurze deterministische Zeichenfolge dar.
Codierte Eingaben validieren
Weisen Sie fehlerhafte RLE-Zeichenfolgen vor der Verarbeitung mit eindeutigen Meldungen zu ungültigen Anzahlen und Escape-Sequenzen zurück.
Häufige Fragen
Wie werden Ziffern codiert?
Vor eine wörtliche Ziffer wird ein umgekehrter Schrägstrich gesetzt; danach folgt ihre Anzahl. So ist sie nicht mit einer Lauflänge zu verwechseln.
Werden Emoji und andere Unicode-Zeichen unterstützt?
Ja. Der Algorithmus durchläuft Unicode-Codepunkte, sodass übliche ergänzende Zeichen wie Emoji einzeln gezählt werden.
Warum ist eine Anzahl mit führender Null ungültig?
Das kanonische Format verwendet positive Ganzzahlen ohne führende Nullen. Dadurch bleiben Werte vorhersehbar und wahrscheinliche Fehler werden erkannt.
Verkürzt die RLE-Codierung den Text immer?
Nein. Sie eignet sich für lange Wiederholungen, doch kurze oder wechselnde Läufe können den Text verlängern, da jeder eine Anzahl enthält.
Werden wiederholte Buchstaben zusammengefasst, die nicht nebeneinanderstehen?
Nein. Nur gleiche, direkt aufeinanderfolgende Zeichen bilden einen Lauf. In „abab“ ist jeder Buchstabe ein eigener Lauf, das Ergebnis lautet also „a1b1a1b1“ und ist länger als das Original. Die Codierung beschreibt lokale Wiederholung, keine Gesamthäufigkeit.
Gibt es eine Obergrenze für die Textlänge?
Ja. Ihre Eingabe darf bis zu hunderttausend Unicode-Zeichen lang sein, und ein decodiertes Ergebnis ist auf eine Million Zeichen begrenzt. So kann eine kurze Eingabe mit einer riesigen Anzahl nicht übermäßig viel Speicher belegen.
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/text/run-length-encode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"aaabbcccc"}'const res = await fetch("https://api.kit.forhosting.com/text/run-length-encode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "aaabbcccc"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/run-length-encode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "aaabbcccc"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/run-length-encode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"aaabbcccc"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"aaabbcccc"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/run-length-encode", 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": "aaabbcccc"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.run_length_encode",
"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.
Limits
max_tokens | 20000 |
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
Codieren Sie aufeinanderfolgende Läufe in unveränderter Reihenfolge
Dieselbe Eingabe erzeugt stets denselben JSON-Wert.
Decodieren Sie mit strenger Formatprüfung
Fehlerhafte Werte führen bewusst zu invalid_input und niemals zu einem nur scheinbar richtigen Teilergebnis.
Verwenden Sie RLE bei bedeutsamen Wiederholungen
Es gibt weder Netzwerkzugriffe noch geteilten Zustand; jedes über die API verarbeitete Element kostet $0.002.
Technische Fragen
Was kostet eine API-Anfrage?
Jedes über die API verarbeitete Element kostet $0.002. Der Browser führt dieselbe deterministische Umwandlung lokal aus.