Loading

NOM

       htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh,
       htobe64, htole64,  be64toh,  le64toh  -  convertir  des  valeurs  entre
       l’ordre des octets de l’hôte et l’ordre petit et gros boutiste

SYNOPSIS

       #define _BSD_SOURCE
       #include <endian.h>

       uint16_t htobe16(uint16_t host_16bits);
       uint16_t htole16(uint16_t host_16bits);
       uint16_t be16toh(uint16_t big_endian_16bits);
       uint16_t le16toh(uint16_t little_endian_16bits);

       uint32_t htobe32(uint32_t host_32bits);
       uint32_t htole32(uint32_t host_32bits);
       uint32_t be32toh(uint32_t big_endian_32bits);
       uint32_t le32toh(uint32_t little_endian_32bits);

       uint64_t htobe64(uint64_t host_64bits);
       uint64_t htole64(uint64_t host_64bits);
       uint64_t be64toh(uint64_t big_endian_64bits);
       uint64_t le64toh(uint64_t little_endian_64bits);

       Ces  fonctions  convertissent l’encodage des octets de valeurs entières
       depuis l’ordre de l’hôte (l’ordre utilisé par le CPU), vers  ou  depuis
       l’ordre petit et gros boutiste.

       Le  nombre,  nn,  dans  le nom de chaque fonction indique la taille des
       entiers gérée par la fonction, soit 16, 32 ou 64 bits.

       Les fonctions dont le nom est de  la  forme  « htobenn »  convertissent
       depuis l’ordre des octets de l’hôte vers l’ordre gros boutiste.

       Les  fonctions  dont  le  nom est de la forme « htolenn » convertissent
       depuis l’ordre des octets de l’hôte vers l’ordre petit boutiste.

       Les fonctions dont le nom est de  la  forme  « benntoh »  convertissent
       depuis l’ordre gros boutiste vers l’ordre des octets de l’hôte.

       Les  fonctions  dont  le  nom est de la forme « lenntoh » convertissent
       depuis l’ordre petit boutiste vers l’ordre des octets de l’hôte.

VERSIONS

       Cette fonction a été ajoutée dans la version 2.9 de la glibc.

CONFORMITÉ

       Ces fonctions ne sont  pas  standard.  Des  fonctions  similaires  sont
       présentes   sur   les  systèmes  BSD,  où  le  fichier  d’en-têtes  est
       <sys/endian.h> au lieu de <endian.h>. Cependant, NetBSD, FreeBSD et  la
       glibc n’ont pas suivi le nommage original d’OpenBSD où la composante nn
       est placée à la fin du nom de la fonction (par  exemple,  sous  NetBSD,
       FreeBSD   et   la   glibc,  l’équivalent  OpenBSD  de  « betoh32 »  est
       « be32toh »).

NOTES

       Ces fonctions  sont  similaires  à  la  vieille  famille  de  fonctions
       byteorder(3). Par exemple, be32toh() est identique à ntohl().

       L’avantage  des fonctions de byteorder(3) est que ce sont des fonctions
       standard disponibles sur tous les systèmes Unix.  D’autre  part,  elles
       ont  été  créées  pour  être  utilisées dans un contexte TCP/IP, ce qui
       signifie qu’elles ne gèrent  pas  les  architectures  64  bits  et  les
       variantes petit boutistes vues dans cette page.

EXEMPLE

       Le  programme  ci-dessous  affiche  les  résultats des conversions d’un
       entier depuis l’ordre des octets de l’hôte vers l’ordre petit  et  gros
       boutiste.  Puisque  l’ordre  de  l’hôte est soit petit boutiste ou soit
       gros boutiste, seule une de ces conversions a un  effet.  Lorsque  vous
       exécutez  ce programme sur un système petit boutiste comme x86-32, vous
       avez :

           $ ./a.out
           x.u32 = 0x44332211
           htole32(x.u32) = 0x44332211
           htobe32(x.u32) = 0x11223344

   Source du programme

       #include <endian.h>
       #include <stdint.h>
       #include <stdio.h>
       #include <stdlib.h>

       int
       main(int argc, char *argv[])
       {
           union {
            uint32_t u32;
            uint8_t arr[4];
           } x;

           x.arr[0] = 0x11;     /* octet d’adresse basse */
           x.arr[1] = 0x22;
           x.arr[2] = 0x33;
           x.arr[3] = 0x44;     /* octet d’adresse haute */

           printf("x.u32 = 0x%x\n", x.u32);
           printf("htole32(x.u32) = 0x%x\n", htole32(x.u32));
           printf("htobe32(x.u32) = 0x%x\n", htobe32(x.u32));

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       byteorder(3)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été traduite et est maintenue par Florentin
       Duneau <fduneau AT gmail DOT com> et l’équipe francophone de traduction
       de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».