Calculateur d'inversion d'ordre des octets
0x12345678 devient 0x78563412 quand ses quatre octets sont inversés, le passage entre l'ordre réseau et la mémoire little-endian. Choisissez une largeur de 8, 16, 32 ou 64 bits et voyez la valeur avant et après en hexadécimal, en décimal et octet par octet. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Valeur
- 0x12345678
- Largeur
- 32
- Nombre d'octets
- 4
- Hexadécimal avant
- 0x12345678
- Hexadécimal après
- 0x78563412
- Décimal avant
- 305419896
Les piles réseau, les formats de fichier et le micrologiciel embarqué ne s’accordent pas sur le fait que l’octet de poids fort d’un entier vienne en premier ou en dernier. Un champ de longueur qui apparaît comme 0x12345678 sur le fil est stocké comme 0x78563412 en mémoire little-endian, et le trajet inverse est tout aussi courant lorsque vous videz un registre et avez besoin de la valeur en ordre réseau. Ce calculateur d’inversion d’ordre des octets accepte un entier et une largeur de 8, 16, 32 ou 64 bits, inverse les octets dans ce contenant et renvoie la valeur hexadécimale avant et après l’échange, ainsi que les formes décimales et les tableaux d’octets correspondants.
Ce qu’une inversion d’ordre des octets fait sur 8, 16, 32 et 64 bits
Un entier non signé multi-octets est une suite d’octets dont le poids dépend de l’endianness. Écrit en notation de position habituelle, 0x12345678 signifie que l’octet de poids fort est 0x12 et l’octet de poids faible est 0x78. Le stockage big-endian pose ces octets dans cet ordre ; le little-endian les inverse, de sorte que la mémoire contient 78 56 34 12.
Inverser l’ordre des octets, c’est précisément ce retournement dans un contenant de largeur fixe : l’échange 32 bits de 0x12345678 est 0x78563412, l’échange 16 bits de 0x1234 est 0x3412, et une valeur 8 bits reste inchangée car un seul octet n’a pas d’ordre à retourner. Un échange 64 bits parcourt de même huit octets, d’où 0x0123456789ABCDEF qui devient 0xEFCDAB8967452301. Le matériel nomme cette instruction bswap ; les aides réseau POSIX telles que htons, htonl, ntohs et ntohl sont le même retournement lorsque l’ordre hôte est little-endian.
Ce calculateur ne devine pas votre plateforme et n’a pas besoin d’un drapeau d’endian source : vous fournissez l’entier tel qu’on l’écrit (ou comme chaîne hex 0x) et une largeur, et le résultat est l’entier dont les octets sont l’inverse de cette largeur. Appliquer l’échange deux fois rétablit la valeur d’origine, ce qui en fait un aller-retour sûr pour les tests qui convertissent des entiers hôtes en ordre réseau et inversement.
Quand inverser l'ordre des octets
La rétro-ingénierie de protocoles, la fabrication de paquets et les défis binaires de CTF ont constamment besoin d’un bswap de confiance pour comparer un vidage hex de Wireshark et un vidage de registre little-endian sans retourner les octets à la main. Les équipes embarquées et micrologicielles convertissent constantes de configuration, graines CRC et nombres magiques entre l’ordre réseau et l’ordre hôte du MCU lorsqu’elles écrivent des en-têtes ou vérifient des images flash.
Pour enseigner l’endianness, il faut un oracle vivant qui garde l’entier fixe et n’inverse que les octets à une largeur choisie, afin que les élèves voient pourquoi htons sur 0x1234 vaut 0x3412 sur un hôte little-endian. Les scripts d’intégration continue qui fabriquent des vecteurs de test pour sérialiseurs gagnent une minuscule fonction pure plutôt qu’une boîte à outils binaire complète pour un seul entier. Une validation en échec ne consomme pas le solde.
Gardez les requêtes petites, figez les chaînes hex dans les tests, et vous obtenez un échange d’endian reproductible pour les devoirs, les analyseurs et les workers de bord.
Cas d’usage
Ordre réseau et ordre hôte
Convertissez un entier 16 ou 32 bits entre le format filaire big-endian et la mémoire little-endian de l’hôte, comme le font htons, htonl, ntohs et ntohl.
Constantes micrologicielles et vidages hex
Inversez les octets des nombres magiques, des longueurs et des graines CRC lorsqu’un vidage hex et un littéral entier C ne s’accordent pas sur l’endianness.
Enseigner l’endianness
Montrez les deux formes hexadécimales du même entier sur 8, 16, 32 ou 64 bits pour que les élèves voient qu’un échange ne fait qu’inverser les octets.
Questions fréquentes
Est-ce la même chose que htons ou bswap ?
Oui. Sur 16 bits, cela correspond à htons/ntohs sur un hôte little-endian ; sur 32 bits, à htonl/ntohl et à un bswap 32 bits ; sur 64 bits, à un bswap de 8 octets.
Que se passe-t-il si la valeur ne tient pas dans la largeur ?
Le calculateur n’enveloppe ni ne tronque : choisissez un contenant plus large ou envoyez une valeur qui tient.
Les nombres négatifs sont-ils autorisés ?
Oui. Une valeur négative est convertie en complément à deux à la largeur choisie, puis les octets de ce motif non signé sont inversés.
Dois-je préciser si ma valeur est en big-endian ou en little-endian ?
Non. Saisissez l'entier tel que vous l'écririez, en décimal ou en hexadécimal avec 0x, puis choisissez la largeur : le résultat est l'entier dont les octets sont inversés dans cette largeur, sans rien supposer de votre machine.
Inverser deux fois redonne-t-il la valeur d'origine ?
Oui. Inverser les octets deux fois avec la même largeur rend exactement la valeur de départ, ce qui permet de vérifier des conversions aller-retour entre l'ordre de la machine et l'ordre réseau.
Outils associés
Pour les développeurs — accès API
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.
Endpoint
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é.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/dev/byte-order-swap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"0x12345678","width":32}'const res = await fetch("https://api.kit.forhosting.com/dev/byte-order-swap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "0x12345678",
"width": 32
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/byte-order-swap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "0x12345678",
"width": 32
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/byte-order-swap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"0x12345678","width":32}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"0x12345678","width":32}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/byte-order-swap", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"value": "0x12345678",
"width": 32
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.byte_order_swap",
"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.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Les valeurs qui ne tiennent pas dans la largeur choisie, les champs manquants et les largeurs illégales échouent avec invalid_input au lieu de boucler en silence.
Contrat d’entrée, forme de la réponse et erreurs
L’entier doit tenir dans la largeur choisie : les valeurs non négatives valent au plus deux à la puissance largeur moins un, et les négatives sont lues en complément à deux et doivent rester dans la plage signée de cette largeur. Les champs numériques facultatifs sont omis plutôt que mis à null lorsqu’un résultat 64 bits ne serait pas exact. Envoyez en POST un corps JSON avec deux champs obligatoires : value, l’entier à inverser, et width, la largeur en bits du contenant. Value peut être un nombre JSON, une chaîne décimale, une chaîne hexadécimale préfixée 0x ou, en option, une chaîne binaire 0b ; les alias number, n, integer et hex sont acceptés. Width doit valoir 8, 16, 32 ou 64 (alias bits, bit_width et size) et peut arriver comme nombre ou comme jeton court du type 32bit. Un débordement, un champ manquant, une chaîne vide, un non-entier ou une largeur hors de l’ensemble fermé échoue avec invalid_input en nommant le champ ; ces échecs ne sont pas facturés. En cas de succès, le corps contient width et byte_count ; hex_before et hex_after comme chaînes 0x majuscules remplies de zéros ; decimal_before et decimal_after comme chaînes décimales exactes afin que les résultats 64 bits ne perdent aucun chiffre ; bytes_before et bytes_after comme tableaux MSB en premier de 0–255 ; et, lorsque chaque magnitude tient dans la plage des entiers sûrs de JavaScript, decimal_before_number et decimal_after_number. Exemple : value 0x12345678 et width 32 donnent hex_before 0x12345678, hex_after 0x78563412 et les octets 18,52,86,120 inversés en 120,86,52,18.
Où une API d’inversion d’ordre des octets justifie son coût
Les sites de contenu qui visent « calculateur d’inversion d’ordre des octets » obtiennent un chemin navigateur gratuit qui coïncide octet pour octet avec l’API payante sur le même module. Comme l’implémentation est parse de niveau A, chaque appel réussi coûte le tarif de base publié $0.002 sans jetons de modèle ni réseau sortant.
Questions techniques
Comment inverser l’ordre des octets d’un entier ?
Envoyez value (décimal ou hex 0x) et width (8, 16, 32 ou 64). L’API inverse les octets de ce contenant et renvoie hex_before, hex_after ainsi que les tableaux décimaux et d’octets correspondants.
Combien coûte le calculateur d’inversion d’ordre des octets ?
L’outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.