64비트 값을 위한 ntohl() 확장
C 함수 ntohl()은 일반적으로 네트워크에서 32비트 값을 변환하는 데 사용됩니다. 호스트 바이트 순서에 대한 바이트 순서입니다. 그러나 특정 시나리오에서는 64비트 값에 대해 유사한 작업이 필요할 수 있습니다.
솔루션
htonl()의 매뉴얼 페이지에는 32-비트로 제한됨이 나와 있습니다. 특정 플랫폼에서는 unsigned long의 크기가 32비트이므로 비트 값입니다. 64비트 변환의 필요성을 해결하기 위해 여러 가지 접근 방식을 탐색할 수 있습니다.
표준 라이브러리:
구현 제안:
전처리기 매직:
<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"> #include <stdint.h> uint64_t host_int = 123; uint64_t big_endian; big_endian = htobe64( host_int ); host_int = be64toh( big_endian );</code>
이 접근 방식은 여러 플랫폼에서 호환되는 표준 C 라이브러리와 유사한 인터페이스를 제공합니다.
위 내용은 C에서 네트워크와 호스트 바이트 순서 사이의 64비트 값을 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!