ForHosting KIT · Ferramentas para dev

Decodificador varint LEB128

Este decodificador LEB128 sem sinal converte uma sequência de bytes de tamanho variável em seu valor inteiro exato.

● BetaGrátis · no seu navegador
Use pelo WebAPIE-mailTelegramApp em breve

Cole bytes hexadecimais como E5 8E 26 ou selecione a notação decimal quando sua fonte usar números de byte comuns. O decodificador acompanha o bit de continuação de cada byte, verifica se a sequência termina corretamente e devolve os bytes normalizados junto ao resultado decimal. Ele ajuda na inspeção de binários WebAssembly, cargas de Protocol Buffers, dados de depuração DWARF e outros formatos compactos.

Como o LEB128 sem sinal armazena um inteiro

LEB128 é uma representação de inteiros em base 128 e ordem little-endian. Cada byte fornece sete bits de dados. O bit mais significativo funciona como sinalizador de continuação: quando vale um, outro byte pertence ao mesmo inteiro; quando vale zero, o valor termina. Como o grupo menos significativo chega primeiro, os dados do primeiro byte ocupam as posições de bit de zero a seis, os do segundo ocupam de sete a treze, e assim por diante. Por exemplo, E5 8E 26 contém os grupos 65, 0E e 26 depois da remoção dos sinalizadores. A combinação desses grupos em deslocamentos sucessivos de sete bits produz 624485. Valores pequenos usam menos bytes, enquanto valores maiores se expandem sem desperdiçar zeros à esquerda. Esta capacidade decodifica somente a forma sem sinal, portanto não faz extensão de sinal nem interpreta o bit superior dos dados como negativo. O resultado é uma string decimal, o que preserva valores exatos mesmo acima do intervalo inteiro seguro do JavaScript.

Insira e valide uma sequência de bytes

Cole um único inteiro codificado completo no campo de texto. No modo hexadecimal padrão, escreva tokens de um ou dois dígitos separados por espaços, vírgulas, dois-pontos ou hífens; E5 8E 26 e 0xE5,0x8E,0x26 são equivalentes. O prefixo 0x sempre indica hexadecimal. Escolha o modo decimal quando uma ferramenta de inspeção exibir bytes como números de 0 a 255, por exemplo 229 142 38. O decodificador rejeita tokens malformados, valores fora do intervalo de byte, entrada vazia e sequências acima do limite publicado de 128 bytes. Ele também confere a estrutura. Todo byte com o bit alto ativado informa que outro byte vem em seguida; por isso, uma sequência terminada em 80 está incompleta. Por outro lado, assim que aparece um byte com o bit alto desativado, o valor acabou. Qualquer token posterior é rejeitado, em vez de ser ignorado ou tratado como outro inteiro. Essas regras deixam erros visíveis e evitam um resultado aparentemente válido para dados truncados ou concatenados.

Use o resultado na depuração de dados binários

A resposta contém o valor decimal exato, a quantidade de bytes consumidos, o array de bytes interpretado e uma representação hexadecimal normalizada em letras maiúsculas. Esses campos facilitam a comparação com um despejo hexadecimal e a criação de testes. WebAssembly usa LEB128 sem sinal em muitos índices, tamanhos e imediatos inteiros. DWARF usa esse formato em atributos compactos, enquanto Protocol Buffers adota uma disposição varint de base 128 bastante próxima. Em cada caso, comece no byte indicado pelo formato externo, reúna bytes até o primeiro cujo bit de continuação esteja desativado e decodifique apenas esse trecho. Se o valor parecer incorreto, confirme a posição inicial e verifique se o campo é realmente sem sinal. LEB128 com sinal e a codificação zigzag de Protocol Buffers exigem uma interpretação adicional que este decodificador não realiza. Para verificações automatizadas, chame a mesma operação determinística pela API por US$ 0,002; entradas idênticas sempre produzem saídas idênticas.

Inspecionar um binário WebAssembly

Decodifique um índice, tamanho de seção ou imediato sem sinal copiado de um despejo hexadecimal WebAssembly.

Depurar um varint de Protocol Buffers

Recupere o inteiro bruto sem sinal de um varint de base 128 antes da interpretação específica do campo.

Ler dados de depuração DWARF

Converta um atributo ou operando ULEB128 em um valor decimal exato e confira seu byte final.

Quanto custa o decodificador?

Cada solicitação da API custa US$ 0,002. A versão no navegador roda localmente e é gratuita.

Ele decodifica valores LEB128 com sinal?

Não. Ele processa apenas LEB128 sem sinal e não aplica extensão de sinal.

Por que o valor decodificado é uma string?

Uma string decimal preserva inteiros acima do intervalo exato e seguro de um número JavaScript.

Posso colar bytes com o prefixo 0x?

Sim. O prefixo 0x sempre seleciona a notação hexadecimal para aquele byte.

Por que um byte final como 80 causa erro?

O bit de continuação está ativado, então a codificação informa que deveria haver mais um byte.

Um varint de Protocol Buffers sempre é o valor final?

Nem sempre. Campos com sinal podem aplicar zigzag ou complemento de dois depois da decodificação do varint bruto.

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.

POSThttps://api.kit.forhosting.com/dev/leb128-decode

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev/leb128-decode \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"E5 8E 26"}'
{
  "text": "E5 8E 26"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.leb128_decode",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_items128
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Ver a documentação completa do KIT →