C 語言中從Big Endian 到Little Endian 的64 位元整數轉換
標準C 函數ntohl() 將32 位元整數轉換為網路位元組順序(大端)到主機位元組順序(小端),反之亦然。然而,在某些平台上需要轉換 64 位元整數(特別是 unsigned long long 值)。
不幸的是,C 標準沒有提供 64 位元整數轉換的專用函數。但是,存在特定於平台的實現。
平台特定的解決方案
程式碼範例
以下程式碼可用於在各種平台上轉換64 位元整數:
<code class="cpp">#include <stdint.h> // For 'uint64_t' #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 int main() { uint64_t host_int = 123; uint64_t big_endian; // Convert to big-endian big_endian = htobe64(host_int); // Convert back to host byte order host_int = be64toh(big_endian); return 0; }</code>
此範例將使用適當的特定於平台的函數在Linux、FreeBSD 和OpenBSD 上執行64 位元整數轉換。
以上是如何在 C 中將 64 位元整數從 Big Endian 轉換為 Little Endian ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!