상세 컨텐츠

본문 제목

ENCODING / BITCONVERTER

C#

by 탑~! 2018. 6. 29. 15:09

본문

컴퓨터는 내부적으로 데이터를 숫자로 처리합니다. A, B, C와 같은 문자도 마찬가지입니다. 그럼 시스템은 내부적으로 문자를 처리하기 위해 숫자로 표현해야 하는데 이 과정을 인코딩(Encoding)이라고 합니다.

 

다만 특정 문자를 표현하기 위해 내부적으로 문자를 어떤 숫자로 처리해야 하는가가 정해져야 하며 이를 정리한 코드체계중 대표적으로 ASCII코드가 있습니다. ASCII코드는 A를 65, B를 66... 으로 표현합니다. 하지만 ASCII코드는 7bit를 기반으로 하기에 영문자나 숫자, 일부특수문자만을 표현할 수 있을뿐 한글, 한자, 일어와 같은 문자는 표현할 수 있는 방법이 없습니다. 그래서 대한민국은 한글표현을 위해 EUC-KR, CP949, KS_C_5601-1987등의 인코딩방식을 만들게 되고 다른 나라들도 자국의 언어를 위해 별도의 인코딩방식을 마련해 뒀습니다.

 

이처럼 문자를 숫자로 처리하는 인코딩방식이 너무 많이 늘어나자 근래에는 유니코드라는 산업표준으로 문자를 인코딩하는 추세입니다.(부호화 방식에 따라 UTF-7, UTF-8, UTF-16, UTF-32등으로 나뉘어짐)

 

만약 .NET환경에서 다른 시스템이나 폴렛폼에서 다루고자 하는 인코딩방식에 맞추려고 할때 System.Text.Encoding을 사용하면 이러한 작업을 좀더 쉽게 구현할 수 있습니다.

 

예를 들어 타 시스템에서 문자를 UTF-8방식으로 사용한다면 아래와 같이 처리할 수 있을 것입니다.

 

string sample = "hello world!";
byte[] b = Encoding.UTF8.GetBytes(sample); //타 시스템으로 전송하기 위한 처리

 

sample = Encoding.UTF8.GetString(b); //타 시스템에서 전달받은 문자를 처리
Console.WriteLine(sample);

 

참고로 문자열을 제외한 다른 타입은 인코딩방식이 고정되어 있습니다. 그래서 이런 경우에는 특별히 System.BitConverter를 사용할 수 있습니다.

 

byte[] b = BitConverter.GetBytes(100);
int i = BitConverter.ToInt16(b, 0);

Console.WriteLine(i);



출처: http://lab.cliel.com/entry/C-SystemTextEncoding?category=478966 [CLIEL LAB]

'C#' 카테고리의 다른 글

FileStream 비동기 입출력  (0) 2018.06.29
대용량 txt 파일 짜르기  (0) 2018.06.29
BinaryFormatter / XmlSerializer / DataContractJsonSerializer  (0) 2018.06.29
EVENTWAITHANDLE  (0) 2018.06.29
LINQ  (0) 2018.06.29

관련글 더보기