2

我很难理解多字节字符在 ascii 表中的表示方式:十进制格式,然后是十六进制。

例如:

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

它将显示:

-61

-87

在 ascii 表中,十进制的“é”是 130,十六进制的 82。我知道 82 是 130 的十六进制值,但是我们如何从 -61 和 -87 获得 130 呢?

提前谢谢我的拼写抱歉

4

1 回答 1

3

根据 UTF-8 字符集(除其他外,许多 GNU/Linux 发行版使用),'é'字符常量的值为0xC3A9,相当于11000011 10010101二进制。在这里我们可以理解结果,假设两个补码表示。

  • 序列11000011等于-61十进制。
  • 序列10010101等于-87十进制。
于 2012-10-18T15:59:17.700 回答