Decodificatore varint LEB128
Questo decodificatore LEB128 senza segno converte una sequenza di byte a lunghezza variabile nel suo valore intero esatto.
Esegui gratis nel browser
Incolli byte esadecimali come E5 8E 26 oppure scelga la notazione decimale se la fonte usa normali numeri di byte. Il decodificatore segue il bit di continuazione di ogni byte, verifica che la sequenza termini correttamente e restituisce i byte normalizzati insieme al risultato decimale. È utile per esaminare binari WebAssembly, payload Protocol Buffers, dati di debug DWARF e altri formati compatti.
Come LEB128 senza segno memorizza un intero
LEB128 è una rappresentazione degli interi in base 128 e ordine little-endian. Ogni byte fornisce sette bit di dati. Il bit più significativo è riservato come indicatore di continuazione: quando vale uno, un altro byte appartiene allo stesso intero; quando vale zero, il valore termina. Poiché il gruppo meno significativo arriva per primo, i dati del primo byte occupano le posizioni da zero a sei, quelli del secondo le posizioni da sette a tredici e così via. Per esempio, E5 8E 26 contiene i gruppi 65, 0E e 26 dopo la rimozione degli indicatori. Combinandoli con successivi spostamenti di sette bit si ottiene 624485. I valori piccoli richiedono meno byte, mentre quelli grandi si espandono senza sprecare zeri iniziali. Questa capacità decodifica soltanto la forma senza segno, quindi non applica l’estensione del segno e non interpreta mai come negativo il bit superiore dei dati. Il risultato viene restituito come stringa decimale, conservando esattamente anche valori superiori all’intervallo degli interi sicuri di JavaScript.
Inserire e convalidare una sequenza di byte
Incolli nel campo di testo un solo intero codificato completo. Nella modalità esadecimale predefinita, scriva token di una o due cifre separati da spazi, virgole, due punti o trattini; E5 8E 26 e 0xE5,0x8E,0x26 sono equivalenti. Il prefisso 0x indica sempre la notazione esadecimale. Scelga la modalità decimale quando uno strumento mostra i byte come numeri da 0 a 255, per esempio 229 142 38. Il decodificatore rifiuta token non validi, valori esterni all’intervallo di un byte, input vuoti e sequenze oltre il limite pubblicato di 128 byte. Controlla inoltre la struttura. Ogni byte con il bit alto impostato promette che ne seguirà un altro, perciò una sequenza che termina con 80 è incompleta. Al contrario, quando compare un byte con il bit alto libero il valore è concluso; qualsiasi token successivo viene rifiutato anziché ignorato o trattato come un altro intero. Queste regole rendono visibili gli errori ed evitano risultati credibili ma falsi da sequenze troncate o concatenate.
Usare il risultato nel debug dei dati binari
La risposta include il valore decimale esatto, il numero di byte consumati, l’array dei byte interpretati e una rappresentazione esadecimale normalizzata in maiuscolo. Questi campi semplificano il confronto con un dump esadecimale o l’inserimento del risultato in un test. WebAssembly usa LEB128 senza segno per molti indici, lunghezze e operandi interi immediati. DWARF lo impiega per attributi compatti, mentre Protocol Buffers adotta una disposizione varint in base 128 strettamente correlata. In ogni caso, parta dal byte indicato dal formato contenitore, raccolga i byte fino al primo con bit di continuazione libero e decodifichi soltanto quel segmento. Se il valore sembra errato, controlli la posizione iniziale e verifichi che il campo sia davvero senza segno. LEB128 con segno e la codifica zigzag di Protocol Buffers richiedono un’ulteriore interpretazione che questo strumento non esegue. Per controlli automatici, richiami la stessa operazione deterministica tramite API per $0.002; input identici producono sempre output identici.
Casi d'uso
Esaminare un binario WebAssembly
Decodifichi un indice, una lunghezza di sezione o un immediato senza segno copiato da un dump WebAssembly.
Analizzare un varint Protocol Buffers
Recuperi l’intero grezzo senza segno di un varint in base 128 prima dell’interpretazione specifica del campo.
Leggere dati di debug DWARF
Converta un attributo o operando ULEB128 in un valore decimale esatto e ne verifichi il byte finale.
Domande frequenti
Quanto costa il decodificatore?
Ogni richiesta API costa $0.002. La versione nel browser viene eseguita localmente ed è gratuita.
Decodifica valori LEB128 con segno?
No. Elabora soltanto LEB128 senza segno e non applica l’estensione del segno.
Perché il valore viene restituito come stringa?
Una stringa decimale conserva gli interi oltre l’intervallo esatto e sicuro di un numero JavaScript.
È possibile incollare byte con prefisso 0x?
Sì. Il prefisso 0x seleziona sempre la notazione esadecimale per quel byte.
Perché un byte finale come 80 genera un errore?
Il suo bit di continuazione è impostato, quindi la codifica indica che manca un altro byte.
Un varint Protocol Buffers è sempre il valore finale?
Non necessariamente. I campi con segno possono applicare zigzag o complemento a due dopo la decodifica del varint grezzo.
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/dev/leb128-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"E5 8E 26"}'const res = await fetch("https://api.kit.forhosting.com/dev/leb128-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "E5 8E 26"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/leb128-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "E5 8E 26"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/leb128-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"E5 8E 26"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"E5 8E 26"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/leb128-decode", 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": "E5 8E 26"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.leb128_decode",
"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_items | 128 |
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. |