4

我今天遇到了这行代码:

int c = (int)'c';

我不知道您可以将 achar转换为int. 所以我测试了一下,发现 a=97, b=98, c=99, d=100 等等...

为什么是'a' 97?这些数字与什么有关?

4

5 回答 5

11

其他人(到目前为止)都提到了 ASCII。这是一个非常有限的观点 - 它适用于'a',但不适用于任何带有重音等的东西 - 可以很容易地用 表示char

Achar只是一个无符号的 16 位整数,它是一个UTF-16 代码单元通常这相当于一个 Unicode 字符,但并非总是如此——有时单个完整字符需要多个代码单元。有关更多详细信息,请参阅文档System.Char

char从to的隐式转换int(您不需要在代码中进行强制转换)只是以自然、无损的方式将该 16 位无符号整数转换为 32 位有符号整数 - 就像您有一个ushort.

请注意,ASCII 中的每个有效字符在 UTF-16 中具有相同的值,这就是为什么当示例只是来自 ASCII 集中的示例时,这两者经常被混淆。

于 2013-04-09T15:39:05.980 回答
7

97是 letter 的 UTF-16 编码单元值a

基本上这个数字与给定字符的 UTF-16 代码单元有关。

于 2013-04-09T15:36:53.140 回答
-1

这些是代表字符的 ASCII 值

于 2013-04-09T15:37:12.920 回答
-1

它们是字符代码,通常称为 ASCII 值。

但是,从技术上讲,字符代码不是 ASCII。

于 2013-04-09T15:37:14.083 回答
-1

它们是对应 ascii 的十进制表示: http ://www.asciitable.com/index/asciifull.gif 所以“a”是 97

于 2013-04-09T15:37:49.510 回答