1

したがって、何らかの理由で、これらの UNICODE 文字はすべて、C で出力すると同じ値を持っているように見えます。

char input[8] = {'⺖', '⺓', '⺄', '⺑', '⻣', '⺽', '⻻', '⺽'};
for( i = 0; i < 9; i++)
{
    printf("Input number equivelents in hex %x, in int %i\nj", input[i], (int)input[i]);
}

これは、UNICODE が C# で対応するものです。C では、0x3f として出力されます。

C#
        [0x00000000] 0x2e96 '⺖' 文字
        [0x00000001] 0x2e93 '⺓' 文字
        [0x00000002] 0x2e84 '⺄' 文字
        [0x00000003] 0x2e91 '⺑' 文字
        [0x00000004] 0x2ee3 '⻣' 文字
        [0x00000005] 0x2ebd '⺽' 文字
        [0x00000006] 0x2efb '⻻' 文字
        [0x00000007] 0x2ebd '⺽' 文字
4

2 に答える 2

3

また、各定数の前に次を付ける必要がありますL

wchar_t input[8] = {L'⺖', L'⺓', L'⺄', L'⺑', L'⻣', L'⺽', L'⻻', L'⺽'};
for( i = 0; i < 9; i++)
{
    printf("Hex: %x, Int: %i\n", input[i], (int)input[i]);
}
于 2012-07-19T20:22:03.330 に答える
2

これらの文字を保持するには、別のデータ構造が必要です。1 つの文字 (従来は 8 ビット、または 0x00 - 0xFF) には文字を含めることができないためです。

したがって、データ構造体 like intorshortを使用してそれらを保持し、Lリテラルの前に指定子を使用します。

int input[8] = { L'⺖', L'⺓', L'⺄', L'⺑', L'⻣', L'⺽', L'⻻', L'⺽' };

そして、あなたのコードは正しく動作します。

于 2012-07-19T19:43:23.367 に答える