2

マルチバイト文字がASCIIテーブルでどのように表現されているかを理解するのに苦労しています.10進数形式、次に16進数形式です。

例えば:

char *c = "é";
printf("%d\n%d", c[0], c[1]);

表示されます:

-61

-87

アスキー テーブルでは、10 進数の "é" は 130、16 進数の "é" は 82 です。82 は 130 の 16 進数値であることは理解していますが、 -61 と -87 から 130 を取得するにはどうすればよいでしょうか?

前もって感謝し、私のつづりを申し訳ありません

4

1 に答える 1

3

UTF-8 charset (とりわけ、多くの GNU/Linux ディストリビューションで使用されている) によると、'é'文字定数の値は であり、これはバイナリ0xC3A9と同等です。11000011 10010101ここで、2 の補数表現を仮定すると、結果を理解できます。

  • シーケンスは10 進数11000011で等しいです。-61
  • シーケンスは10 進数10010101で等しいです。-87
于 2012-10-18T15:59:17.700 に答える