2016-11-11 3 views
0

私は小数点への六角表現を復号するための説明を見つけただけではQtを使用して: How to get decimal value of a unicode character in c++C++:(Pythonのint型(hex_data、16)のような)小数にUTF16の文字の16進表現に変換

私はないですと:

次の操作を実行する方法

:Qtのを使用して cout << (int)cない仕事 (あなたはそれを正しく使用している場合、それは実際に作業を行います...!編集)を行います

私はいくつかのソケットを介して送信された2つの文字の16進数表現を得た(ただ、最終的には六角のreprを取得する方法を考え出した...!)とUTF16-表現次の両方合わせた収率:

char c = u"\0b7f" 

これは、のutf16 10進値に変換されます! (UTF-テーブルhttp://www.fileformat.info/info/unicode/char/0b7f/index.htmでそれを参照してください)

これはABSOLUT基本的なものでなければなりませんが、私は時間のために、この問題をぶら下げていたプロジェクトのためのC++を使用することを強制指定されたPythonの開発者として....

+2

ほとんどのシステムでは、charは完全なutf16文字を保持しません。 UTF16は2/4バイトですが、charは1です。また、コンバージョンの意味は?これらの数字はすべて、コンピュータ上で同じように表されます。 – Nonanon

+1

'char'は1バイトしかないので、C++ 11以上を使用している場合は、Windowsでは2バイト、Posixでは4バイト、プラットフォームに依存しないchar16_tは' wchar_t'を使用します。次に変数を 'int'にキャストして数値を得ることができます。 –

+0

私はちょうど私の質問を編集....ちょうど私はこのutf16表現を与える...私はちょうど "\ 0b7f"(charテーブルを参照してください)の小数点値 "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"を忘れてしまった!私はu "\ u0b7f"の代わりに "\ 0b7f"を持っていました....ありがとうございました。このくそで6時間 –

関連する問題