본문 바로가기

Mobile Develop/Windows Programing

Unicode Little-Endian <-> Big-Endian 변환

유니코드에서 한 문자가 Little-Endian또는 Big-Endian으로 정의 되는 것을 볼 수 있다
이는 시스템상의 사용하는 문제로 가끔 변환해 줄 필요가 있는데....

네트워크 관련 API가 있지만, 해더 파일을 넣어줘야 한다는 이유 하나만으로 쓰기가 싫어졌다 -ㅂ-ㅋ

void Trans_Endian(WCHAR *uni)
{
    int nSize = WideCharToMultiByte(CP_UTF8, 0, uni, -1, NULL, 0, NULL, NULL);

    for (int n = 0; n<nSize; n++)
     {
        // UTF-16 little Endian -> Big Endian
        WCHAR high_bit = 0x0000, low_bit = 0x0000;
        high_bit = (*(uni+n) & 0xFF00) >> 8;
        low_bit = (*(uni+n) & 0x00FF)  << 8;

        WCHAR p = low_bit | high_bit;
            
        if (p == 0x00cd) break;
        *(uni+n) = _T(p);
            
     }

}

이것으로 간단하게 해결~!