Convertisseur d’endianness

Octets source (mémoire)

↓ ordre des octets converti ↓

Octets résultat (mémoire)

# Hex entrée Hex sortie Non signé Signé Binaire

Convertisseur d’endianness

Ceci est un convertisseur d’endianness : il inverse l’ordre des octets d’une valeur hex multi-octets en mémoire. Ordre des octets d’une valeur multi-octets. 0x12345678 : big-endian 12 34 56 78, little-endian 78 56 34 12, PDP 34 12 78 56. Exemple : 32 bits, BE→LE. Deux mots AA BB CC DD 11 22 33 44 → DD CC BB AA 44 33 22 11 ; tout inverser → 44 33 22 11 DD CC BB AA.

Mode d’emploi

  1. Collez de l’hex. Longueur multiple de 2/4/8 (sauf inversion totale).
  2. 16/32/64 bits. Chaque mot à part.
  3. Source/cible : big-endian, little-endian ou PDP. Échanger ⇄ réinjecte le résultat.
  4. Cellules, tableau, __builtin_bswap.

Mémoire et valeurs

La gauche est l’adresse 0. Little-endian met le LSB à l’adresse la plus basse. uint8_t n’a pas d’endianness.

Ordre réseau et C

TCP/IP est big-endian (RFC 1700). Sur hôte LE : htons/htonl. Flottants via memcpy.

PDP / middle-endian

Le PDP-11 stocke 32 bits en 34 12 78 56.

Questions fréquentes

  • 3 octets en 32 bits ? Multiple de 4 requis.
  • Tout inverser = swap par mot ? Non si plusieurs mots.
  • Flottants ? Avec IEEE 754.

Outils liés

Flottants : IEEE 754. Dump : Hex Dump. Entiers : Hexadécimal en décimal.

Des valeurs entières ? Hexadécimal en décimal →