Decodificador LEB128 varint
Este decodificador LEB128 sin signo convierte una secuencia de bytes de longitud variable en su valor entero exacto.
Ejecutar — gratis
Pegue bytes hexadecimales como E5 8E 26 o seleccione la notación decimal si su fuente usa números de byte ordinarios. El decodificador sigue el bit de continuación de cada byte, comprueba que la secuencia termine correctamente y devuelve los bytes normalizados junto con el resultado decimal. Resulta útil al inspeccionar binarios WebAssembly, cargas de Protocol Buffers, datos de depuración DWARF y otros formatos compactos.
Cómo almacena un entero LEB128 sin signo
LEB128 es una representación de enteros en base 128 y orden little-endian. Cada byte aporta siete bits de datos. El bit más significativo se reserva como indicador de continuación: si vale uno, otro byte pertenece al mismo entero; si vale cero, el valor termina. Como el grupo menos significativo llega primero, los datos del primer byte ocupan las posiciones de bit cero a seis, los del segundo las posiciones siete a trece, y así sucesivamente. Por ejemplo, E5 8E 26 contiene los grupos 65, 0E y 26 después de retirar los indicadores. Al combinar esos grupos con desplazamientos sucesivos de siete bits se obtiene 624485. Los valores pequeños requieren menos bytes y los grandes se amplían sin ceros iniciales innecesarios. Esta capacidad solo decodifica la variante sin signo: no extiende el signo ni interpreta como negativo el bit superior de los datos. El resultado se entrega como cadena decimal para conservar incluso valores que superen el rango entero seguro de JavaScript.
Introduzca y valide una secuencia de bytes
Pegue un único entero codificado completo en el campo de texto. En el modo hexadecimal predeterminado, escriba tokens de uno o dos dígitos separados por espacios, comas, dos puntos o guiones; E5 8E 26 y 0xE5,0x8E,0x26 son equivalentes. El prefijo 0x siempre indica hexadecimal. Elija el modo decimal cuando una herramienta muestre bytes como números entre 0 y 255, por ejemplo 229 142 38. El decodificador rechaza tokens incorrectos, valores fuera del intervalo de un byte, entradas vacías y secuencias que superen el límite publicado de 128 bytes. También comprueba la estructura. Cada byte cuyo bit alto esté activado promete que sigue otro byte, por lo que una secuencia que termine en 80 está incompleta. En sentido contrario, cuando aparece un byte con el bit alto desactivado el valor ya terminó; cualquier token posterior se rechaza en lugar de ignorarse o tratarse como otro entero. Así, los errores de entrada quedan visibles y no producen resultados engañosos.
Use el resultado al depurar datos binarios
La respuesta incluye el valor decimal exacto, la cantidad de bytes consumidos, el arreglo de bytes interpretado y una representación hexadecimal normalizada en mayúsculas. Estos campos facilitan comparar el resultado con un volcado hexadecimal o incorporarlo a una prueba. WebAssembly usa LEB128 sin signo para numerosos índices, longitudes e inmediatos enteros. DWARF lo utiliza en atributos compactos, mientras que Protocol Buffers emplea una disposición varint de base 128 estrechamente relacionada. En cada caso, comience en el byte señalado por el formato contenedor, reúna bytes hasta el primero cuyo bit de continuación esté desactivado y decodifique únicamente ese segmento. Si el valor parece incorrecto, confirme el desplazamiento inicial y que el campo sea realmente sin signo. LEB128 con signo y la codificación zigzag de Protocol Buffers necesitan una interpretación adicional que esta herramienta no realiza. Para comprobaciones automáticas, invoque la operación determinista mediante API por $0.002; la misma entrada siempre genera la misma salida.
Qué puede hacer con ella
Inspeccionar un binario WebAssembly
Decodifique un índice, una longitud de sección o un inmediato sin signo copiado de un volcado hexadecimal WebAssembly.
Depurar un varint de Protocol Buffers
Recupere el entero sin signo representado por un varint de base 128 antes de aplicar la interpretación específica del campo.
Leer datos de depuración DWARF
Convierta un atributo u operando ULEB128 en un valor decimal exacto y compruebe su byte de terminación.
Preguntas frecuentes
¿Cuánto cuesta el decodificador?
Cada solicitud de API cuesta $0.002. La versión del navegador se ejecuta localmente y es gratuita.
¿Decodifica valores LEB128 con signo?
No. Solo procesa LEB128 sin signo y no aplica extensión de signo.
¿Por qué se devuelve el valor como cadena?
Una cadena decimal conserva enteros que superan el intervalo exacto y seguro de un número JavaScript.
¿Puedo pegar bytes con el prefijo 0x?
Sí. Anteponer 0x a un token siempre selecciona la notación hexadecimal para ese byte.
¿Por qué falla un byte final como 80?
Su bit de continuación está activado, de modo que la codificación promete otro byte que no se proporcionó.
¿Un varint de Protocol Buffers siempre es el valor final?
No necesariamente. Los campos con signo pueden aplicar zigzag o complemento a dos después de decodificar el varint bruto.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"text": "E5 8E 26"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.leb128_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_items | 128 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |