2016-11-11 10 views
0

(파이썬의 INT처럼 (hex_data, 16)) : How to get decimal value of a unicode character in c++C++ : 진수로 UTF16의 문자의 진수 표현을 변환 I 소수점으로 만 Qt를 사용하여 육각 표현을 디코딩 설명 발견

내가 아니라고대로를 : (.. 당신이 그것을 제대로 사용하는 경우 실제로 작동합니까! 편집) : Qt는을 사용하고 cout << (int)c 것은 하지 작업 을 수행

:

방법은 다음과 같은 작업을 수행 할

좀 소켓을 통해 전송 된 두 문자의 진수 표현은 (! 그냥 .. 마지막으로 육각에 repr을 얻는 방법을 알아 냈)있어 모두 결합 수율은 UTF16-표현 다음

char c = u"\0b7f" 

을 이것은 의 utf16 10 진수 값으로 변환됩니다! 이는 엡솔루트 초등학교 물건이어야한다

(UTF-테이블 http://www.fileformat.info/info/unicode/char/0b7f/index.htm 그것을 참조)하지만 난 시간 동안이 문제를 걸려하고 프로젝트에 대한 C++를 사용하도록 강요 지정된 파이썬 개발자 ....

+2

거의 모든 시스템에서 char은 전체 utf16 문자를 보유하지 않습니다. UTF16은 2/4 바이트이지만 char은 하나입니다. 또한 전환으로 무엇을 의미합니까? 이 숫자들은 모두 컴퓨터에서 같은 방식으로 나타납니다. – Nonanon

+1

'char'은 1 바이트 뿐이므로 Windows에서는 2 바이트, Posix에서는 4 바이트 인'wchar_t'를 사용하거나 C++ 11 이상을 사용하는 경우 플랫폼 독립형이되도록'char16_t'를 사용할 수 있습니다. 그러면 변수를 'int'로 캐스팅하여 수치를 얻을 수 있습니다. –

+0

Youre는 절대적으로 옳다. 내 질문을 편집했다. ... 결합 된 두 개의 문자가이 utf16 표현을 제공한다. 단지 "\ 0b7f"(10 진수 값 "2943")를 얻고 싶다. –

답변

1

사용 등 더 넓은 문자 유형 (char은 8 비트, 최소 16 개가 필요함) 및 UTC 리터럴에 대한 올바른 형식. 이 작업 (live demo) :

#include <iostream> 

int main() 
{ 
    char16_t c = u'\u0b7f'; 

    std::cout << (int)c << std::endl; //output is 2943 as expected 

    return 0; 
} 
+0

작품! 백 슬래시 뒤에 "u"를 잊어 버렸습니다! 나는 "\ u0b7f"대신에 "\ 0b7f"를 가지고있었습니다 .... .... 고맙습니다. 나는 약 빠져서 stackoverflow에 대해 더 빨리 질문해야합니다. 이 쓰레기 6 시간 –