반응형
✔ 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;
}
감사합니다.
반응형
'Programming > C#' 카테고리의 다른 글
[C#] int, float, bool,struct를 Null 로 초기화방법 - System.Nullable (444) | 2022.05.03 |
---|---|
[Unity, C#] FTP 다운로드, 업로드 하기 (602) | 2022.04.21 |
[C#] 문자열(string, char [])을 byte[] 바이트 배열로 변환, byte[] 바이트 배열을 string 문자열로 변환 (592) | 2022.04.19 |
[C#] Byte를 Bit 배열로 변환 - Bit를 Byte로 변환 (924) | 2022.04.01 |
[C#] 배열의 복사 - 어떤게 제일 빠르지? (Buffer.BlockCopy, Array.Copy) (1203) | 2022.03.28 |
댓글