C에서 64비트 엔디안 변환
htonl() 함수는 일반적으로 호스트에서 네트워크 바이트로 32비트 정수를 변환하는 데 사용됩니다. 주문하다. 그러나 다른 접근 방식이 필요한 64비트 정수의 경우 이는 충분하지 않을 수 있습니다.
교차 플랫폼 솔루션
표준 교차 플랫폼 솔루션의 경우 다음을 고려하세요. htobe64() 함수를 사용합니다. 이 기능은 Linux 및 FreeBSD에서 사용할 수 있으며 다음과 같이 사용할 수 있습니다.
<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>
전처리기 매크로
htobe64()를 사용할 수 없는 경우 다음을 사용할 수 있습니다. 플랫폼 차이를 숨기기 위한 전처리기 매크로. 다음 코드는 Linux, FreeBSD 및 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>
Union 기반 접근 방식
또 다른 옵션은 공용체를 사용하여 64비트를 나타내는 것입니다. 빅 엔디안과 리틀 엔디안 형식의 정수입니다. 그런 다음 그에 따라 바이트를 교환할 수 있습니다. 그러나 이 접근 방식은 빅 엔디안 플랫폼에서 중단될 수 있습니다.
위 내용은 C에서 호스트와 네트워크 바이트 순서 사이의 64비트 정수를 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!