'C 네트워크 라이브러리'는 엔디안을 처리하는 기능을 제공합니다. 즉, htons (), htonl (), ntohs () 및 ntohl () ... 여기서 n은 "network"(즉, big-endian)이고 h는 "host"(즉, 암호).
이러한 명백한 '함수'는 (일반적으로) 매크로로 정의되므로 [<netinet / in.h> 참조], 사용에 대한 런타임 오버 헤드가 없습니다.
다음 매크로는 이러한 '함수'를 사용하여 엔디안을 평가합니다.
#include <arpa/inet.h>
#define IS_BIG_ENDIAN (1 == htons(1))
#define IS_LITTLE_ENDIAN (!IS_BIG_ENDIAN)
게다가:
시스템의 엔디안을 알아야하는 유일한 시간은 알 수없는 엔디안의 다른 시스템에서 읽을 수있는 변수를 [파일 / 기타에] 쓸 때입니다 (플랫폼 간 호환성을 위해 ) ... 다음과 같은 경우 엔디안 함수를 직접 사용하는 것이 좋습니다.
#include <arpa/inet.h>
#define JPEG_MAGIC (('J'<<24) | ('F'<<16) | ('I'<<8) | 'F')
// Result will be in 'host' byte-order
unsigned long jpeg_magic = JPEG_MAGIC;
// Result will be in 'network' byte-order (IE. Big-Endian/Human-Readable)
unsigned long jpeg_magic = htonl(JPEG_MAGIC);