길이 2

WideCharToMultiByte, MultiByteToWideChar 메모리 할당 관련 리턴 값

WideCharToMultiByte, MultiByteToWideChar와 관련해서 오해가 많고 헷갈리는 부분이 여섯번째 인수를 0으로 줬을 때의 리턴값이다. 리턴하는 값이 바로 인수로 집어넣을 수 있는 메모리 할당에 필요한 크기인지, 변환될 버퍼의 문자열 길이인지, 게다가 널터미네이트가 고려되었는지도 헷갈린다. 검색해서 여러 블로그와 웹페이지를 둘러보았는 데 문자열 변환결과는 맞게 나오지만 그 과정에서 잘못 의미를 이해하고 사용하는 경우도 많았다. ///////////////////////////////////////////////////////////////////2019년 추가)// WideCharToMultiByte, MultiByteToWideChar 함수는 작동이 독특하다. 특히 리턴값에 주목..

C, C++ 문법 2009.09.04

멀티바이트 및 유니코드 문자열 길이 구하는 api 사용시 유의점

멀티바이트는 말그대로 문자 하나의 길이를 다양하게(멀티하게^^) 처리한다는 의미이다. 멀티바이트는 숫자나 영문자나 인용부호 등을 1바이트로 처리하며, 그외 한글이나 중국 글자, 일본글자 등은 2바이트로 표현한다. 1바이트와 2바이트 값을 구분하기 위해 2바이트는 무조건 128(0x80)이후의 값으로 시작할 것이다. 가령 영문 'z'는 0x7a, 한글 '가'는 0xb0,0xa1 값으로 표현된다. 시스템이 문자를 맞딱뜨렸을때 0x80보다 적은 값이면 해당 문자를 z처럼 1바이트로 인식하고 0x80이 넘으면 2바이트 값이므로 다음의 1바이트와 같이 읽어서 의미를 파악할 것이다. 유니코드는 각각의 문자에 유니크한 값을 주어서 모든 문자는 동일한 길이를 지닌다. 현재는 2바이트이다. 세계의 모든 문자를 유니코드로..

API 2009.06.24