midas+son의 크리에이티브(creative) 이야기

FString CommonFunc::ConvertHexToFString(FString& inStr)

{

FString resultString;


int count = inStr.Len() / 4;

for (int i = 0; i < count; i++)

{

FString tempFString = inStr.Mid(i * 4, 4);

std::string tempStr(TCHAR_TO_UTF8(*tempFString));

int strHex = strtoul(tempStr.c_str(), 0, 16);


resultString.AppendChar(strHex);

}


return resultString;

}



한글이 유니코드(2byte)로 되어있을 때

16진수(hex)나 2진(binary)가 아니라 

스트링(FString)으로만 구성되어있을때 

변환하는 방법을 찾았다.

(예를 들면 "레벨"이라는 한글이 "B808BCA8"로 들어올 때, "레"가 "B808"이다.)


한글 한글자 16진수 코드 4개로 이루어져 2byte이고

이를 숫자로 바꾸었다. (std::string으로 바꾸고 strroul함수 사용)


그리고 wchar_t라는 와이드캐릭터셋 변수에 넣으면

숫자를 알아서 한글로 바꾸어준다.

언리얼4의 FString은 내부적으로 wchar_t의 배열이므로

AppendChar()함수에 숫자로 변환한 값을 넣어주면

FString에 한글이 정산적으로 들어가는 것을 확인할 수 있다.


별도의 인코딩 함수가 없어서 고생했다. 

완성된 문자열로 들어온 값이라 hex가 아니라 스트링으로만 인식 된다.

wchar_t 의 속성을 나중에야 찾아서 그제서야 해결했다.

'공부 > Unreal4' 카테고리의 다른 글

언리얼 코딩 표준  (0) 2017.02.13
유용한 사이트  (0) 2017.02.06
언리얼4 체인 효과 내기  (0) 2017.01.11
언리얼 인벤토리 시스템 자료  (0) 2017.01.11
블루프린트 받아올 때 실수한 부분  (0) 2017.01.10