엔디언
엔디언은 컴퓨터 과학에서 데이터가 저장되는 방식을 설명하는 용어입니다. 구체적으로 여러 바이트로 구성된 데이터 형식에서 어느 쪽 끝에 가장 중요한 값이 포함되는지를 정의합니다. 엔디언에는 빅 엔디언과 리틀 엔디언이라는 두 가지 유형이 있습니다.
빅 엔디언
빅 엔디언은 이진 데이터를 저장하는 가장 일반적인 방식입니다. 가장 중요한 값(또는 가장 큰 값)을 먼저 배치한 다음 덜 중요한 값들을 배치합니다. 예를 들어 정수 123을 빅 엔디언으로 표현하면 백의 자리 값(1)을 먼저 배치하고, 그다음 십의 자리 값(2), 일의 자리 값(3)을 배치하므로 [123]이 됩니다.
리틀 엔디언
리틀 엔디언은 가장 덜 중요한 값을 먼저 저장한 다음 점점 더 중요한 값들을 저장합니다. 예를 들어 숫자 123을 리틀 엔디언 표기법으로 나타내면 [321]입니다. 문자열 "ABC"는 [CBA]로 표현됩니다.
엔디언 변환
대부분의 경우 개발자는 엔디언을 지정할 필요가 없습니다. 컴파일러가 특정 플랫폼에 맞는 올바른 데이터 유형을 생성하기 때문입니다. 그러나 프로그램에서 외부 입력을 처리해야 할 수 있습니다. 예를 들어 데이터가 다른 엔디언으로 저장된 파일 형식이 이에 해당합니다. 이 경우 데이터를 리틀 엔디언에서 빅 엔디언으로 또는 그 반대로 변환해야 합니다.
엔디언을 변환하는 작업은 데이터를 단순히 뒤집는 것만큼 간단하지 않습니다. 비트가 아니라 바이트를 뒤집어야 합니다. 다시 말해 각 바이트(또는 8비트 블록) 자체는 그대로 유지하고 바이트의 순서를 바꿔야 합니다. 이는 데이터의 16진수 또는 이진 표현을 사용해 설명할 수 있습니다.
예를 들어 정수 41,394는 빅 엔디언 표기법으로 다음과 같이 표현됩니다:
16진수: A1B2
이진수: 1010000110110010
이 데이터를 리틀 엔디언으로 변환할 때는 데이터를 뒤집는 것이 아니라 데이터 안의 개별 바이트를 뒤집습니다. 16진수에서는 각 바이트를 두 자리로 표현하므로 [A1][B2]가 되고, 이진수에서는 8자리로 표현하므로 [10100001][10110010]이 됩니다.
따라서 41,394의 리틀 엔디언 표현은 다음과 같습니다:
16진수: B2A1
이진수: 1011001010100001
NOTE: 일부 프로세서는 변환 없이 빅 엔디언 또는 리틀 엔디언 방식으로 데이터를 가져올 수 있습니다. 이를 양방향 엔디언 데이터 액세스라고 합니다.
지식 테스트하기