본문 바로가기
Programming/C#

[C#] 리틀 엔디안, 빅 엔디안과 변환 방법을 알아보자

by 타임박스 2022. 5. 27.
반응형


✔ Little endian, Big endian

C# endian Convert



엔디언(Endianness)은 쉽게 말해 배열에 바이트 데이터를 넣을때 바이트 순서를 의미한다.

흔히 통신을 이용하여 데이터를 주고 받을때 이 엔디안을 고려하며 프로그래밍을 해야한다.

대표적인 엔디안의 종류는 little endian, big endian이 있다.

우리가 주로 이용하는 컴퓨터는 대부분 윈도우나 인텔 기반의 리눅스가 많다.

이 시스템들은 리틀 앤디안 방식으로 돌아간다.

하지만 네트워크상으로 데이터를 전송할 때에는 빅 엔디안 기준으로 송수신된다.

 

● 빅 엔디안

big endian : 메모리 공간의 시작주소에서 메모리 마지막 주소 순서로 쓰는 방식

0[시작주소] -> 100[마지막주소] 

 

● 리틀 엔디안

little endian : 메모리 공간의 시작주소에서 메모리 마지막 주소 순서로 쓰는 방식

100[마지막주소] -> 0[시작주소]

 

● 장단점

뭐 굳이 우리가 엔디안을 개발하진 않겠지만 알뜰신잡이라고 생각하고 훑어보자 ㅎㅎ

빅 엔디언 : 디버그가 편함 

리틀 엔디언 : 메모리에 저장된 하위 바이트들의 계산이 필요없어 값을 얻기가 쉽다

 

● 리틀 엔디언 <-> 빅 엔디언 변환

먼저 내 컴퓨터가 리틀 앤디언인지 빅 앤디언인지 확인하고 싶다면 아래 코드처럼 확인할 수 있다.

if(BitConverter.IsLittleEndian)
    Console.WriteLine("little endian");
else
    Console.WriteLine("big endian");

코드는 너무 쉽다. 

 public byte[] EndianConvert(byte[] datas)
{
    byte[] arr = new byte[datas.Length];

    //빅 앤디언-> 리틀 앤디언, 리틀 앤디언 -> 빅 앤디언
    //그냥 거꾸로 돌리기만 하면됨..
    Array.Reverse(arr);

    return arr;
}

 

감사합니다.

반응형

댓글