64 ビット整数変換: htobe64() と be64toh() を利用する
C の ntohl() 関数は主に 32 -bit 値のため、開発者は 64 ビット整数を変換するためのソリューションを探すことになります。このニーズに対処するために、ビッグ エンディアンからリトル エンディアンへの変換を効果的に実行するための htobe64() と be64toh() の使用を検討します。
htobe64() と be64toh() の可用性はプラットフォームによって異なります。 Linux (glibc >= 2.9)、OpenBSD、FreeBSD、および NetBSD は、これらの関数への直接アクセスを提供します。ただし、異なる OS 間での互換性を確保するために、次のプリプロセッサ コードを使用できます。
<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>
このコードは、プラットフォーム間で統一されたインターフェイスを提供し、開発者が必要な機能で関数を使用できるようにします。使用パターンは簡単です:
<code class="cpp"> uint64_t host_int = 123; uint64_t big_endian; big_endian = htobe64( host_int ); host_int = be64toh( big_endian );</code>
htobe64() と be64toh() を活用することで、ターゲットに関係なく、ビッグ エンディアン形式とリトル エンディアン形式の間で 64 ビット整数を変換するための一貫した効率的な方法が得られます。プラットフォーム。
以上がhtobe64() と be64toh() を使用してビッグ エンディアンとリトル エンディアンの間で 64 ビット整数を変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。