Conversion d'entiers 64 bits : utilisation de htobe64() et be64toh()
La fonction ntohl() en C est principalement utilisée pour 32 -bits, laissant les développeurs chercher une solution pour convertir des entiers 64 bits. Pour répondre à ce besoin, nous explorons l'utilisation de htobe64() et be64toh() pour effectuer efficacement une conversion big endian en little endian.
La disponibilité de htobe64() et be64toh() varie selon les plateformes. Linux (glibc >= 2.9), OpenBSD, FreeBSD et NetBSD offrent un accès direct à ces fonctions. Cependant, pour garantir la compatibilité entre différents systèmes d'exploitation, le code de préprocesseur suivant peut être utilisé :
<code class="cpp">#if defined(__linux__) # include <endian.h> #elif defined(__FreeBSD__) || defined(__NetBSD__) # include <sys/endian.h> #elif defined(__OpenBSD__) # include <sys/types.h> # define be16toh(x) betoh16(x) # define be32toh(x) betoh32(x) # define be64toh(x) betoh64(x) #endif</code>
Ce code fournit une interface unifiée sur toutes les plates-formes, permettant aux développeurs d'utiliser les fonctions avec les fonctionnalités souhaitées. Le modèle d'utilisation est simple :
<code class="cpp"> uint64_t host_int = 123; uint64_t big_endian; big_endian = htobe64( host_int ); host_int = be64toh( big_endian );</code>
En tirant parti de htobe64() et be64toh(), vous bénéficiez d'une méthode cohérente et efficace pour convertir des entiers 64 bits entre les formats big endian et little endian, quelle que soit la cible. plateforme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!