2017년 2월 9일 목요일

UniCode To MultiByte 변환 (Window)

포스트할 내용은 윈도우 코딩중 사용하게 되는 문자열 변환 관련 입니다.
최근에 프로젝트를 Multibyte 에서 UniCode로 변환 해서 진행하다 보니 기본이
UniCode로 진행 하게 되어서 데이터 처리 하는데 기본에 처리 했던 방식이라 정리 차원에서..
쓰여질 윈도우 API 함수는 WideCharToMultiByte 함수 입니다.
API 원형은 MSDN 에서 찾아 보시면 되구요 간단히 함수로 만들어 보면 아래와 같습니다.


LPBYTE BDConW2M(UINT nCodePage, LPBYTE szSrc, int nLen, int &nConLen)
{
 nConLen = WideCharToMultiByte(nCodePage, 0, (LPCWSTR)szSrc, nLen, NULL, 0, NULL, NULL);
 LPBYTE pConBuff = new BYTE[nConLen];
 pConBuff[0] = 0;

 WideCharToMultiByte(nCodePage, 0, (LPCWSTR)szSrc, nLen, (LPSTR)pConBuff, nConLen, NULL, NULL);

 return pConBuff;
}

물론 변환해서 받은 쪽에서 메모리 해제는 해줘야 합니다.
두번에 걸쳐서 하는 이유는 첫번째에는 변환할 사이즈를 얻어내어 실제로 변환할 버퍼의 크기를 지정하기 위함입니다.
그럼 ^^;

댓글 없음: