Codificador Git Base85
“hello” vira a linha Git Base85 EXk~0{ZvX%Q, cujo E inicial indica que a linha guarda cinco bytes: o dialeto que o Git usa em patches binários, diferente do Ascii85 da Adobe. Codifica texto ou bytes e decodifica linhas. 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
- hello
- Resultado
- EXk~0{ZvX%Q
- Modo de cálculo
- Encode
- Formato de saída
- Text
- Variante
- git_base85
O Git grava alterações de arquivos binários em diffs unificados com um dialeto Base85 próprio, não Adobe Ascii85 nem Base64 simples. Cada linha de dados começa com uma letra de prefixo de comprimento—de A a Z para um a vinte e seis bytes decodificados, de a a z para vinte e sete a cinquenta e dois—seguida de cinco caracteres do alfabeto para cada quatro bytes de carga. Quem inspeciona seções GIT binary patch, depura falhas de apply ou cria ferramentas compatíveis precisa de um conversor que fale exatamente esse alfabeto e esse formato de linha.
Codificar texto ou hex em linhas Git Base85
Em cada bloco grava um prefixo de comprimento (A significa um byte, B dois, até Z para vinte e seis, depois a para vinte e sete até z para cinquenta e dois) e expande cada grupo de quatro bytes em cinco caracteres do alfabeto de oitenta e cinco símbolos do Git: dígitos, letras maiúsculas e minúsculas, e o conjunto de pontuação que omite aspas, vírgulas, pontos, barras e barras invertidas para que os patches permaneçam amigáveis a e-mail e shell.
Um grupo final curto é preenchido com zeros para a aritmética e depois truncado ao número correto de blocos de cinco caracteres, para que o decodificador recupere a contagem exata de bytes só com o prefixo. Defina format como hex quando a carga for binária bruta: text deve ser uma string hexadecimal de comprimento par (espaços e sublinhados permitidos), e esses bytes são codificados sem camada UTF-8. Entrada vazia é válida e produz resultado vazio com zero bytes e zero linhas.
O caminho é aritmética pura—sem rede, sem sal aleatório, sem relógio—assim entradas idênticas sempre produzem corpos Base85 idênticos para goldens de integração contínua.
Decodificar linhas com prefixo de comprimento e rejeitar entrada inválida
Defina mode como decode e coloque uma ou mais linhas Git Base85 em text. Linhas em branco são ignoradas para que você possa colar um fragmento copiado de um patch maior. Após o prefixo, o restante deve ser exatamente cinco vezes o número de grupos de quatro bytes necessários para a contagem declarada—símbolos a mais ou a menos são erro, não truncamento silencioso.
Cada caractere codificado deve pertencer ao alfabeto do Git; um símbolo emprestado do Adobe Ascii85 (por exemplo um menor-que solto ou um z de corrida de zeros que o Git não usa) falha imediatamente para que você nunca aplique por engano um dialeto alheio como corpo de patch binário. Uma decodificação bem-sucedida concatena todas as linhas em ordem em um único buffer de bytes.
Com format hex o resultado é uma string hex em minúsculas dos bytes recuperados, a escolha prática quando a carga é literal comprimido com zlib de um GIT binary patch real e não texto legível.
Como o Git Base85 difere do Ascii85
Muitas pessoas buscam um codificador Base85 depois de ver dados binários em um git diff e caem em ferramentas Adobe Ascii85 com outro alfabeto, wrappers opcionais less-than-tilde e um atalho z para zeros. O dialeto do Git é deliberadamente distinto: oitenta e cinco símbolos fixos começando no dígito zero, prefixos de comprimento por linha obrigatórios, sem delimitadores Adobe e sem token z de compressão. Esta página atende à intenção de busca específica do Git—codificador git base85, patch binário base85, decodificar git base85—e não compete com uma página Ascii85 geral.
Outro fluxo cola só as linhas de dados de um GIT binary patch (pulando o cabeçalho literal N se você já souber o tamanho) e recupera bytes para inspeção. Mantenha cargas modestas—é um item parse de nível A, não um servidor de packfiles—e fixe as strings result em goldens porque o algoritmo é totalmente determinístico entre isolados e linguagens que implementam a mesma tabela.
Casos de uso
Inspecionar corpos de GIT binary patch
Decodifique linhas Base85 com prefixo de comprimento copiadas de um git diff --binary para fazer hex-dump da carga literal comprimida sem aplicar o patch inteiro.
Perguntas frequentes
Como codifico texto para Git Base85?
O campo result contém as linhas unidas por quebras de linha, cada uma com letra de comprimento A–z, e bytes é o comprimento UTF-8.
Como decodifico linhas Base85 de um patch binário do Git?
Defina mode como decode e coloque as linhas com prefixo de comprimento em text. Use format hex quando a carga for binária; format text (padrão) devolve UTF-8 se os bytes forem Unicode válido.
O que diferencia Git Base85 do Adobe Ascii85?
O Git usa um alfabeto de 85 caracteres diferente, exige prefixo de comprimento por linha (A–Z, a–z), não usa delimitadores <~ ~> e não implementa o atalho z de zeros da Adobe.
O codificador Git Base85 é gratuito?
A ferramenta do navegador roda grátis no seu dispositivo.
O que significa a primeira letra de cada linha Git Base85?
É o tamanho daquela linha em bytes: A significa um, B dois, até Z para 26, e depois a para 27 até z para 52. Uma linha nunca guarda mais de 52 bytes, e o decodificador usa essa letra para recuperar a quantidade exata.
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/enc/base85-git \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base85-git", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base85-git",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base85-git", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base85-git", 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": "hello"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base85_git",
"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.
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
Esta capacidade codifica texto UTF-8 ou bytes hexadecimais em linhas Git Base85 e as decodifica de volta, rejeitando símbolos ilegais, prefixos de comprimento errados e tamanhos de grupo incoerentes com invalid_input. Chamadas de API bem-sucedidas custam US$ 0,002 por item; falhas de validação não são cobradas.
Codificar texto ou hex em linhas Git Base85
Envie um corpo JSON com o campo de string obrigatório text e deixe mode em encode, ou defina mode como encode de forma explícita. Por padrão format é text: o motor codifica sua string em UTF-8 e percorre os bytes em blocos de no máximo cinquenta e dois octetos—o mesmo máximo que o Git usa em cada linha de patch binário. A resposta inclui result (linhas unidas por quebras de linha), mode encode, format, variant git_base85, bytes (comprimento da carga antes da codificação) e lines (linhas de saída não vazias).
Decodificar linhas com prefixo de comprimento e rejeitar entrada inválida
Cada linha não vazia deve começar com uma letra de comprimento válida; qualquer outro primeiro caractere falha com invalid_input citando a regra do prefixo de comprimento. Com format text (padrão) esses bytes são interpretados como UTF-8 com decodificador fatal: sequências inválidas geram invalid_input em vez de caracteres de substituição que corromperiam diffs posteriores. A resposta repete mode decode, format, variant git_base85, bytes como comprimento decodificado e lines como a contagem de linhas de entrada não vazias. Falhas de validação não são faturadas na API pré-paga, então sondar uma colagem suspeita é seguro para operadores e barato para scripts que condicionam merges ao sucesso do parse.
Como isso difere do Ascii85 e como usar a API
Use a API pré-paga do KIT a US$ 0,002 por item bem-sucedido quando um backend, bot ou job de integração contínua precisar emitir ou verificar corpos Git Base85 com saldo; validação falha nunca consome esse saldo.
Casos de integração
Criar fixtures de teste compatíveis
Codifique sequências de bytes conhecidas em linhas Git Base85 para testes unitários de ferramentas apply, bots de merge e documentação que precise coincidir com o alfabeto e os prefixos do Git.
Detectar mistura de dialetos no CI
Rejeite Adobe Ascii85 ou colagens corrompidas com invalid_input antes que um pipeline trate Base85 alheio como corpo válido de patch binário.
Perguntas técnicas
O que acontece com entrada Base85 inválida?
A decodificação falha com invalid_input para prefixos de comprimento errados, caracteres fora do alfabeto do Git, tamanhos de grupo incorretos ou UTF-8 inválido quando format é text. Falhas de validação não são cobradas.