IT Share you

Big Endian과 Little Endian 바이트 순서의 차이점

shareyou 2020. 12. 6. 22:19
반응형

Big Endian과 Little Endian 바이트 순서의 차이점


Big Endian과 Little Endian Byte 순서의 차이점은 무엇입니까?

이 두 가지 모두 유니 코드 및 UTF16과 관련된 것으로 보입니다. 정확히 어디에 사용합니까?


Big-Endian (BE) / Little-Endian (LE)은 멀티 바이트 단어를 구성하는 두 가지 방법입니다. 예를 들어 2 바이트를 사용하여 UTF-16으로 문자를 나타내는 경우 문자 0x1234를 바이트 문자열 (0x00-0xFF)로 나타내는 두 가지 방법이 있습니다 .

Byte Index:      0  1
---------------------
Big-Endian:     12 34
Little-Endian:  34 12

텍스트가 UTF-16BE 또는 UTF-16LE를 사용하는지 여부를 결정하기 위해 사양에서는 U + FEFF 문자를 나타내는 문자열 앞에 BOM ( Byte Order Mark) 을 추가 할 것을 권장합니다 . 따라서 UTF-16으로 인코딩 된 텍스트 파일의 처음 2 바이트가 FE, FF이면 인코딩은 UTF-16BE입니다. 를 들어 FF, FE그것은 UTF-16LE입니다.

시각적 예 : 다른 인코딩의 "예제"라는 단어 (BOM이있는 UTF-16) :

Byte Index:   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
------------------------------------------------------------
ASCII:       45 78 61 6d 70 6c 65
UTF-16BE:    FE FF 00 45 00 78 00 61 00 6d 00 70 00 6c 00 65
UTF-16LE:    FF FE 45 00 78 00 61 00 6d 00 70 00 6c 00 65 00

자세한 내용은 Endianness 및 / 또는 UTF-16 의 Wikipedia 페이지를 참조하십시오 .


Ferdinand의 답변 (및 기타)은 정확하지만 불완전합니다.

Big Endian (BE) / Little Endian (LE)은 UTF-16 또는 UTF-32와 관련이 없습니다. 그들은 유니 코드 이전에 존재했으며 숫자 바이트가 컴퓨터 메모리에 저장되는 방식에 영향을 미칩니다. 프로세서에 따라 다릅니다.

값이있는 숫자가 있으면 0x12345678메모리에서 12 34 56 78(BE) 또는 78 56 34 12(LE)로 표시됩니다.

UTF-16과 UTF-32는 각각 2 개의 4 바이트로 표시되므로 바이트 순서는 해당 플랫폼에서 숫자가 따르는 순서를 따릅니다.


UTF-16은 유니 코드를 16 비트 값으로 인코딩합니다. 대부분의 최신 파일 시스템은 8 비트 바이트에서 작동합니다. 예를 들어 UTF-16으로 인코딩 된 파일을 디스크에 저장하려면 16 비트 값의 어느 부분이 첫 번째 바이트에 들어가고 어떤 부분이 두 번째 바이트에 들어가는 지 결정해야합니다.

Wikipedia 에는 더 완전한 설명이 있습니다.


리틀 엔디안 : adj.

주어진 16 비트 또는 32 비트 워드 내에서 하위 주소의 바이트의 중요성이 낮은 컴퓨터 아키텍처를 설명합니다 (단어는 '작은 끝 우선'으로 저장 됨). PDP-11 및 VAX 컴퓨터 및 Intel 마이크로 프로세서 제품군과 많은 통신 및 네트워킹 하드웨어는 리틀 엔디안입니다. 이 용어는 때때로 바이트 이외의 단위 순서를 설명하는 데 사용됩니다. 대부분의 경우 바이트 내의 비트입니다.

빅 엔디안 : adj.

[흔한; 1980 년 4 월 1 일자 Danny Cohen, USC / ISI IEN 137의 유명한 논문 On Holy Wars and a Plea for Peace를 통해 Swift 's Gulliver 's Travels에서 발췌]

주어진 멀티 바이트 숫자 표현 내에서 최상위 바이트가 가장 낮은 주소를 갖는 컴퓨터 아키텍처를 설명합니다 (단어는 'big-end-first'로 저장 됨). IBM 370 제품군, PDP-10, Motorola 마이크로 프로세서 제품군 및 대부분의 다양한 RISC 설계를 포함한 대부분의 프로세서는 빅 엔디안입니다. 빅 엔디안 바이트 순서는 네트워크 순서라고도합니다.

--- 전문 용어 파일에서 : http://catb.org/~esr/jargon/html/index.html


빅 엔디안과 리틀 엔디안은 일련의 바이트가 컴퓨터 메모리에 저장되는 순서를 설명하는 용어입니다.

  1. Big-endian은 "big end"(시퀀스에서 가장 중요한 값)가 먼저 저장되는 순서입니다 (가장 낮은 저장 주소에).
  2. Little-endian은 "작은 끝"(시퀀스에서 최하위 값)이 먼저 저장되는 순서입니다.

예를 들면

빅 엔디안 컴퓨터에서는 16 진수에 필요한 두 바이트 4F52로 저장 될 4F52스토리지(if 4F is stored at storage address 1000, for example, 52 will be at address 1001).

리틀 엔디안 시스템에서는 다음과 같이 저장됩니다. 524F (52 at address 1000, 4F at 1001).


1 바이트 이상을 사용하는 문자 코드의 경우 최상위 바이트를 먼저 읽거나 쓸지 여부를 선택할 수 있으므로 유니 코드 / UTF-16 인코딩에 대해 바이트 엔디안 (크거나 작음)을 지정해야합니다 . Unicode / UTF-16은 가변 길이 인코딩이기 때문에 (즉, 각 문자는 하나 또는 여러 바이트로 표현 될 수 있음)이를 지정해야합니다. (그러나 UTF-8 "단어"는 길이가 항상 8 비트 / 1 바이트 (문자가 여러 포인트 일 수 있음)이므로 엔디안성에 문제가 없습니다.) 유니 코드 텍스트를 나타내는 바이트 스트림의 인코더가 디코더가 사용중인 규칙에 동의하지 않으면 잘못된 문자 코드가 해석 될 수 있습니다. 이러한 이유로 엔디안 규칙이 미리 알려져 있거나 일반적으로바이트 순서 표시 는 일반적으로 유니 코드 텍스트 파일 / 스트림의 시작 부분에 지정되어 큰 엔디안 순서가 사용되는지 여부를 나타냅니다.

참고 URL : https://stackoverflow.com/questions/701624/difference-between-big-endian-and-little-endian-byte-order

반응형