Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Integer 64-bit Antara Hos dan Pesanan Bait Rangkaian dalam C?
Penukaran Endian 64-bit dalam C
Fungsi htonl() biasanya digunakan untuk menukar integer 32-bit daripada hos kepada bait rangkaian pesanan. Walau bagaimanapun, ini mungkin tidak mencukupi untuk integer 64-bit, yang memerlukan pendekatan berbeza.
Penyelesaian Merentas platform
Untuk penyelesaian merentas platform standard, pertimbangkan menggunakan fungsi htobe64(). Fungsi ini tersedia di Linux dan FreeBSD, dan boleh digunakan seperti berikut:
<code class="cpp">#include <endian.h> uint64_t host_int = 123; uint64_t big_endian; big_endian = htobe64(host_int); host_int = be64toh(big_endian);</code>
Makro Prapemproses
Jika htobe64() tidak tersedia, anda boleh menggunakan makro prapemproses untuk menyembunyikan perbezaan platform. Kod berikut melakukan ini untuk Linux, FreeBSD dan OpenBSD:
<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>
Pendekatan Berasaskan Kesatuan
Pilihan lain ialah menggunakan kesatuan untuk mewakili 64-bit integer dalam format endian besar dan endian kecil. Anda kemudian boleh menukar bait dengan sewajarnya. Walau bagaimanapun, pendekatan ini mungkin rosak pada platform endian besar.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Integer 64-bit Antara Hos dan Pesanan Bait Rangkaian dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!