Codificador e decodificador por comprimento de execução
«aaabbcccc» vira «a3b2c4» ao codificar, e decodificar «a3b2c4» devolve «aaabbcccc», letra por letra. Dígitos e barras invertidas são escapados para que todo resultado seja lido sem ambiguidade, e qualquer caractere Unicode funciona. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- aaabbcccc
- Modo de cálculo
- Encode
- Resultado
- a3b2c4
A codificação por comprimento de execução transforma cópias consecutivas de um caractere no próprio caractere seguido da quantidade de repetições. Esta ferramenta realiza a transformação nos dois sentidos: escolha codificar para texto comum ou decodificar para um valor previamente codificado. Ela aceita caracteres Unicode, preserva a ordem exata e aplica uma regra simples de escape para que dígitos e barras invertidas possam fazer o percurso de ida e volta sem ambiguidade. O resultado é determinístico e não depende de rede, aleatoriedade, armazenamento nem interpretação por modelo de linguagem.
Codifique sequências consecutivas sem perder a ordem
Escolha o modo de codificação e informe o conteúdo de origem no campo de texto. O codificador percorre os caracteres Unicode da esquerda para a direita, reúne somente caracteres iguais e adjacentes e escreve cada grupo como o caractere seguido de uma contagem decimal. Por exemplo, um bloco de três letras idênticas vira essa letra e o número três.
Caracteres iguais separados por outro caractere continuam sendo sequências diferentes, pois a codificação descreve repetição local, e não frequência global. Uma entrada vazia gera um resultado vazio, enquanto um caractere que aparece uma vez recebe contagem um. Dígitos e barras invertidas exigem cuidado porque as contagens também usam dígitos.
Por isso, o formato coloca uma barra invertida antes de um dígito literal ou de uma barra invertida literal e só então acrescenta a contagem. A resposta contém o modo escolhido e o resultado, permitindo que sistemas registrem a operação sem adivinhação.
Decodifique com validação rigorosa do formato
Escolha o modo de decodificação quando o texto já contiver elementos de comprimento de execução. Cada elemento deve ter exatamente uma representação de caractere seguida de uma contagem decimal positiva. Caracteres comuns que não sejam dígitos dispensam prefixo.
Um dígito literal ou uma barra invertida literal precisa ser escapado com uma barra invertida anterior, separando o dado da contagem posterior. Contagens não podem ser zero, começar com zero nem ultrapassar a precisão inteira segura do JavaScript. O decodificador também rejeita um dígito sem escape no início de um elemento, uma barra invertida pendente, um escape desconhecido ou um caractere sem contagem.
A saída decodificada tem limite de um milhão de caracteres Unicode, e a entrada tem limite de cem mil, evitando que uma contagem enorme consuma memória excessiva.
Use RLE quando a repetição realmente importar
A codificação por comprimento de execução deve ser vista como uma representação reversível, não como uma técnica universal de compressão. Ela funciona melhor com sequências longas e contínuas, como máscaras simples, marcadores de estado repetidos, linhas de grades, padrões de teste ou exercícios introdutórios sobre compressão. Textos alternados ou com caracteres quase sempre diferentes podem ficar maiores porque cada sequência inclui uma contagem; a ferramenta não esconde essa desvantagem nem escolhe outro método automaticamente.
Em fluxos de produção, guarde o resultado junto da documentação desta convenção de escape, pois outras implementações podem usar separadores, colchetes ou contagem antes do caractere. Unicode é processado por ponto de código, portanto emoji comuns são tratados como caracteres individuais.
Casos de uso
Ensinar um algoritmo básico de compressão
Mostre como sequências adjacentes viram elementos de caractere e contagem e depois recupere o conteúdo para demonstrar a reversibilidade.
Validar uma entrada codificada
Rejeite cadeias RLE malformadas antes que entrem no fluxo, com erros explícitos para contagens e escapes inválidos.
Perguntas frequentes
Como os dígitos são codificados?
Um dígito literal recebe uma barra invertida antes dele e depois a sua contagem. Assim, ele não é confundido com o tamanho da sequência.
É possível codificar emoji e outros caracteres Unicode?
Sim. O algoritmo percorre pontos de código Unicode, portanto caracteres suplementares comuns, como emoji, são contados individualmente.
Por que uma contagem iniciada por zero é rejeitada?
O formato canônico usa inteiros positivos sem zeros iniciais. Recusar grafias alternativas mantém os valores previsíveis e revela prováveis enganos.
A codificação RLE sempre deixa o texto menor?
Não. Ela funciona bem com repetições consecutivas longas, mas sequências curtas ou alternadas podem crescer porque cada uma inclui uma contagem.
Letras repetidas que não estão juntas são agrupadas?
Não. Só caracteres iguais e vizinhos formam uma sequência. Em «abab» cada letra é a própria sequência, então o resultado é «a1b1a1b1», mais longo que o original: a codificação descreve repetições locais, não a frequência total.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"text": "aaabbcccc"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.run_length_encode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_tokens | 20000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Codifique sequências consecutivas sem perder a ordem
Os mesmos dados sempre produzem exatamente o mesmo JSON.
Decodifique com validação rigorosa do formato
Essas regras interrompem o processamento diante de formato malformado: a resposta será um erro invalid_input, nunca um valor parcial que pareça correto.
Use RLE quando a repetição realmente importar
Não existe chamada de rede nem estado compartilhado, e cada item processado pela API custa US$ 0,002.
Casos de integração
Criar fixtures repetitivos e compactos
Represente sequências extensas em máscaras, linhas de grade, marcadores de estado ou dados sintéticos por uma cadeia pequena e determinística.
Perguntas técnicas
Quanto custa uma solicitação pela API?
Cada item processado pela API custa US$ 0,002. O executor do navegador realiza localmente a mesma transformação determinística.