>백엔드 개발 >C++ >C에서 엔디안을 프로그래밍 방식으로 감지하려면 어떻게 해야 합니까?

C에서 엔디안을 프로그래밍 방식으로 감지하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-29 10:41:10489검색

How Can I Programmatically Detect Endianness in C  ?

C에서 엔디안 감지

바이트가 메모리에 저장되는 순서를 나타내는 엔디안은 아키텍처마다 다를 수 있습니다. C에서 프로그래머는 기본 하드웨어 또는 데이터 구조와의 호환성을 보장하기 위해 실행 중인 시스템의 엔디안을 결정해야 할 수 있습니다.

프로그래밍 방식으로 엔디안을 감지하려면 특정 데이터 유형의 바이트 표현을 검사하는 방법이 있습니다. 다음 코드 조각은 이 접근 방식이 어떻게 작동하는지 보여줍니다.

union Data {
    uint32_t i;
    char c[4];
};

bool is_big_endian()
{
    Data data = {0x01020304};
    return data.c[0] == 1;
}

이 코드에서는 첫 번째 멤버가 부호 없는 32비트 정수(uint32_t)이고 두 번째 멤버가 4개의 배열인 공용체를 정의합니다. 문자(c[4]). 0x01020304 값을 공용체 멤버 i에 ​​할당하면 정수의 바이트 표현은 시스템의 엔디안에 따라 역순(리틀 엔디안) 또는 일반 순서(빅 엔디안)로 c 배열 요소에 배치됩니다.

c[0]의 값을 확인하여 엔디안을 결정할 수 있습니다. c[0]에 최하위 바이트(낮은 값)가 포함되어 있으면 시스템은 리틀 엔디안입니다. c[0]에 최상위 바이트(더 높은 값)가 포함되어 있으면 시스템은 빅엔디안입니다.

위 내용은 C에서 엔디안을 프로그래밍 방식으로 감지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.