Codifica e decodifica a lunghezza di esecuzione
«aaabbcccc» si codifica in «a3b2c4», e decodificare «a3b2c4» restituisce «aaabbcccc», lettera per lettera. Cifre e barre rovesciate vengono protette perché ogni risultato si rilegga senza ambiguità, e qualsiasi carattere Unicode è accettato. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- aaabbcccc
- Modalità di calcolo
- Encode
- Risultato
- a3b2c4
La codifica a lunghezza di esecuzione sostituisce le copie consecutive di un carattere con il carattere seguito dal numero di ripetizioni. Questo strumento esegue la trasformazione in entrambe le direzioni: Lei può scegliere la codifica per un testo normale oppure la decodifica per un valore già codificato. Sono supportati i caratteri Unicode, l’ordine viene conservato esattamente e una semplice regola di escape consente a cifre e barre inverse di compiere il percorso di andata e ritorno senza ambiguità. Il risultato è deterministico e non utilizza rete, casualità, archiviazione o interpretazione mediante modelli linguistici.
Codifichi le sequenze consecutive senza alterarne l’ordine
Scelga la modalità di codifica e inserisca il contenuto originale nel campo di testo. Il codificatore esamina i caratteri Unicode da sinistra a destra, raggruppa soltanto quelli uguali e adiacenti e scrive ogni gruppo come carattere seguito da un conteggio decimale. Per esempio, un blocco di tre lettere identiche diventa quella lettera seguita dal numero tre.
Caratteri uguali separati da un altro carattere restano sequenze distinte, perché questa codifica descrive la ripetizione locale e non la frequenza complessiva. Un ingresso vuoto produce un risultato vuoto, mentre un carattere presente una sola volta riceve il conteggio uno. Cifre e barre inverse richiedono attenzione perché anche i conteggi sono composti da cifre.
Il formato antepone quindi una barra inversa a ogni cifra o barra inversa letterale prima di aggiungere il conteggio. La risposta riporta la modalità scelta e il risultato, così i sistemi possono registrare l’operazione.
Decodifichi con una convalida rigorosa del formato
Scelga la modalità di decodifica quando il testo contiene già elementi RLE. Ogni elemento deve includere esattamente la rappresentazione di un carattere seguita da un intero decimale positivo. I comuni caratteri diversi dalle cifre non richiedono prefissi.
Una cifra o una barra inversa letterale deve essere preceduta da una barra inversa, così il dato si distingue dal conteggio successivo. I conteggi non possono essere zero, iniziare con zero o superare la precisione intera sicura di JavaScript. Il decodificatore rifiuta anche una cifra senza escape all’inizio di un elemento, una barra inversa finale, un escape non previsto o un carattere privo di conteggio.
L’uscita decodificata è limitata a un milione di caratteri Unicode e l’ingresso a centomila, impedendo a un conteggio enorme di consumare memoria eccessiva.
Utilizzi RLE quando la ripetizione è significativa
La codifica a lunghezza di esecuzione va considerata una rappresentazione reversibile, non un metodo universale di compressione. Offre i risultati migliori quando i dati contengono lunghe sequenze continue, per esempio maschere semplici, indicatori di stato ripetuti, righe di griglie, schemi di prova o esercizi introduttivi sulla compressione. Testi alternati o composti quasi sempre da caratteri diversi possono diventare più lunghi, perché ogni sequenza include un conteggio; lo strumento non nasconde questo limite e non seleziona automaticamente un altro sistema.
Nei flussi di produzione conservi il risultato insieme alla documentazione di questa convenzione di escape, dato che altre implementazioni potrebbero usare separatori, parentesi o conteggi anteposti. Unicode viene elaborato per punto di codice, quindi gli emoji comuni sono trattati come singoli caratteri.
Casi d'uso
Illustrare un semplice algoritmo di compressione
Mostri come le sequenze adiacenti diventano coppie di carattere e conteggio, quindi ripristini il contenuto per dimostrarne la reversibilità.
Convalidare un ingresso codificato
Rifiuti stringhe RLE malformate prima che entrino nel flusso, con errori espliciti per conteggi ed escape non validi.
Domande frequenti
Come vengono codificate le cifre?
Una cifra letterale viene preceduta da una barra inversa e poi seguita dal suo conteggio, così non può essere confusa con la lunghezza della sequenza.
Sono supportati gli emoji e gli altri caratteri Unicode?
Sì. L’algoritmo scorre i punti di codice Unicode, pertanto i comuni caratteri supplementari, come gli emoji, vengono contati singolarmente.
Perché viene rifiutato un conteggio che inizia con zero?
Il formato canonico usa interi positivi senza zeri iniziali. Rifiutare grafie alternative rende i valori prevedibili e segnala probabili errori.
La codifica RLE rende sempre il testo più breve?
No. È efficace con lunghe ripetizioni consecutive, ma sequenze brevi o alternate possono crescere perché ciascuna include un conteggio.
Le lettere ripetute ma non vicine vengono raggruppate?
No. Solo i caratteri uguali e adiacenti formano una serie. In «abab» ogni lettera è una serie a sé, quindi il risultato è «a1b1a1b1», più lungo dell'originale: la codifica descrive ripetizioni locali, non la frequenza totale.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"text": "aaabbcccc"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.run_length_encode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_tokens | 20000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Codifichi le sequenze consecutive senza alterarne l’ordine
Gli stessi dati restituiscono sempre lo stesso JSON.
Decodifichi con una convalida rigorosa del formato
Queste regole bloccano intenzionalmente i dati dubbi: un testo non valido restituisce un errore invalid_input invece di un valore plausibile ma errato.
Utilizzi RLE quando la ripetizione è significativa
Ogni elemento elaborato tramite API costa $0.002.
Casi di integrazione
Creare fixture ripetitivi e compatti
Rappresenti lunghe sequenze in maschere, griglie, indicatori di stato o dati sintetici mediante una stringa breve e deterministica.
Domande tecniche
Quanto costa una richiesta API?
Ogni elemento elaborato tramite API costa $0.002. L’esecutore nel browser applica localmente la stessa trasformazione deterministica.