ForHosting KIT · Outils pour développeurs

Décodeur varint LEB128

Ce décodeur LEB128 non signé transforme une séquence d’octets de longueur variable en sa valeur entière exacte.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Collez des octets hexadécimaux comme E5 8E 26, ou choisissez la notation décimale si votre source emploie des nombres ordinaires. Le décodeur suit le bit de continuation de chaque octet, vérifie que la séquence se termine correctement et renvoie les octets normalisés avec le résultat décimal. Il convient à l’analyse de binaires WebAssembly, de charges Protocol Buffers, de données de débogage DWARF et d’autres formats compacts.

Comment LEB128 non signé stocke un entier

LEB128 représente les entiers en base 128 et en ordre little-endian. Chaque octet fournit sept bits de données. Le bit de poids fort sert d’indicateur de continuation : s’il vaut un, un autre octet appartient au même entier ; s’il vaut zéro, la valeur est terminée. Puisque le groupe de poids faible arrive en premier, les données du premier octet occupent les positions zéro à six, celles du suivant les positions sept à treize, et ainsi de suite. Par exemple, E5 8E 26 contient les groupes 65, 0E et 26 une fois les indicateurs retirés. Leur combinaison à des décalages successifs de sept bits donne 624485. Les petites valeurs utilisent donc moins d’octets, tandis que les grandes s’étendent sans zéros initiaux inutiles. Cette capacité décode uniquement la forme non signée : elle n’effectue aucune extension de signe et n’interprète jamais le bit supérieur des données comme un signe négatif. Le résultat est une chaîne décimale afin de conserver exactement les valeurs dépassant la plage d’entiers sûrs de JavaScript.

Saisir et valider une séquence d’octets

Collez un seul entier encodé complet dans le champ de texte. En mode hexadécimal par défaut, saisissez des jetons d’un ou deux chiffres séparés par des espaces, virgules, deux-points ou traits d’union ; E5 8E 26 et 0xE5,0x8E,0x26 sont équivalents. Le préfixe 0x désigne toujours l’hexadécimal. Choisissez le mode décimal lorsqu’un outil affiche les octets sous forme de nombres compris entre 0 et 255, par exemple 229 142 38. Le décodeur refuse les jetons incorrects, les valeurs hors de la plage d’un octet, les entrées vides et les séquences dépassant la limite publiée de 128 octets. Il contrôle également la structure. Tout octet dont le bit fort vaut un annonce qu’un autre octet suit ; une séquence finissant par 80 est donc incomplète. Dès qu’un bit fort vaut zéro, la valeur est achevée : tout jeton ultérieur est refusé au lieu d’être ignoré ou traité comme un autre entier. Ces règles rendent les erreurs visibles et empêchent les résultats trompeurs issus de données tronquées ou concaténées.

Exploiter le résultat pendant le débogage binaire

La réponse contient la valeur décimale exacte, le nombre d’octets consommés, le tableau d’octets analysé et une représentation hexadécimale normalisée en majuscules. Ces éléments facilitent la comparaison avec un vidage hexadécimal ou l’ajout du résultat à un test. WebAssembly emploie LEB128 non signé pour de nombreux indices, longueurs et opérandes entiers immédiats. DWARF l’utilise pour des attributs compacts, tandis que Protocol Buffers adopte une disposition varint en base 128 très proche. Dans chaque cas, partez de l’octet indiqué par le format conteneur, rassemblez les octets jusqu’au premier dont le bit de continuation vaut zéro, puis décodez uniquement ce segment. Si le résultat semble erroné, vérifiez le décalage de départ et assurez-vous que le champ est bien non signé. LEB128 signé et l’encodage zigzag de Protocol Buffers nécessitent une interprétation supplémentaire que ce décodeur n’effectue pas. Pour automatiser les contrôles, appelez la même opération déterministe via l’API pour $0.002 ; une entrée identique produit toujours une sortie identique.

Examiner un binaire WebAssembly

Décodez un indice, une longueur de section ou un immédiat non signé copié depuis un vidage hexadécimal WebAssembly.

Déboguer un varint Protocol Buffers

Retrouvez l’entier brut non signé d’un varint en base 128 avant toute interprétation propre au champ.

Lire des données de débogage DWARF

Convertissez un attribut ou opérande ULEB128 en valeur décimale exacte tout en vérifiant son octet final.

Combien coûte le décodeur ?

Chaque requête API coûte $0.002. La version pour navigateur s’exécute localement et reste gratuite.

Décode-t-il les valeurs LEB128 signées ?

Non. Il traite uniquement LEB128 non signé et n’applique aucune extension de signe.

Pourquoi la valeur est-elle renvoyée comme chaîne ?

Une chaîne décimale conserve les entiers qui dépassent la plage exacte et sûre d’un nombre JavaScript.

Puis-je coller des octets préfixés par 0x ?

Oui. Le préfixe 0x sélectionne toujours la notation hexadécimale pour cet octet.

Pourquoi un dernier octet comme 80 échoue-t-il ?

Son bit de continuation vaut un ; l’encodage annonce donc un autre octet qui n’a pas été fourni.

Un varint Protocol Buffers est-il toujours la valeur finale ?

Pas nécessairement. Les champs signés peuvent appliquer zigzag ou le complément à deux après le décodage du varint brut.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

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

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

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"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_items128
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →