September 29, 2009

C# using BitConverter

 안녕하세요 :) 오랜만에 포스팅입니다. 요즘은 일교차가 커지고 날씨도 점점 추워지고 있습니다. 다들 감기조심하세요^^

 

 요즘 MFC 프로젝트를 C# Windows Forms 로 컨버팅 작업을 하고 있습니다. 작업중 memcpy 에서 막혀 조금 고생하다 한방법을 찾아 이렇게 소개합니다.ㅋ

BitConverter
Converts base data types to an array of bytes, and an array of bytes to base data types.

 

 우선 MFC 의 어떤 부분이 저를 괴롭혔는지 아래 코드를 살펴보겠습니다.

unsigned int x = 0; // 0 ~ 4294967295
unsigned char intTochar[4] = {0,};

memcpy(intTochar, &x, 4);

for(int i = 0 ; i < 4 ; i++)
{
     printf("%d\n",intTochar[i]);
}

하고자 하는 사항은 부호없는 정수형(unsigned int) 의 값을 부호없는 문자형(unsigned char) 배열에 담는것입니다. 정수형은 4Byte 이고 문자형은 1Byte 이기때문에 크기가 4인 배열에 담으려고 하는것입니다. C 에서는 memcpy 를 통해 수행이 가능합니다. 아래는 출력 결과 입니다. 부호없는 정수형은 0~4294967295 의 데이터 범위를 가집니다. 0일때와 4294967295 의 출력결과 입니다. 한바이트 씩 출력해보았습니다.

 

 

(변수 x 가 0 일때와 4294967295 출력 결과)

 

 

 다음은 C# 을 통해 위와 같이 구동되는 방법을 알려드리겠습니다. (아래와 같습니다 -_-a 흐흐)

uint x = 4294967295; // 0 ~ 4294967295
byte[] intTochar = new byte[4];

intTochar = BitConverter.GetBytes(x);	

 

참으로 간단합니다.^^ 가끔보면 C# 은 참 매력있는거 같습니다.

BitConverter 에 대하여 더많이 알고 싶다면 (역시 MSDN 이죠?!)

http://msdn.microsoft.com/en-us/library/system.bitconverter.aspx

 

 

 

 

 

No comments:

Post a Comment