我今天遇到了这行代码:
int c = (int)'c';
我不知道您可以将 achar
转换为int
. 所以我测试了一下,发现 a=97, b=98, c=99, d=100 等等...
为什么是'a' 97?这些数字与什么有关?
我今天遇到了这行代码:
int c = (int)'c';
我不知道您可以将 achar
转换为int
. 所以我测试了一下,发现 a=97, b=98, c=99, d=100 等等...
为什么是'a' 97?这些数字与什么有关?
其他人(到目前为止)都提到了 ASCII。这是一个非常有限的观点 - 它适用于'a'
,但不适用于任何带有重音等的东西 - 可以很容易地用 表示char
。
Achar
只是一个无符号的 16 位整数,它是一个UTF-16 代码单元。通常这相当于一个 Unicode 字符,但并非总是如此——有时单个完整字符需要多个代码单元。有关更多详细信息,请参阅文档System.Char
。
char
从to的隐式转换int
(您不需要在代码中进行强制转换)只是以自然、无损的方式将该 16 位无符号整数转换为 32 位有符号整数 - 就像您有一个ushort
.
请注意,ASCII 中的每个有效字符在 UTF-16 中具有相同的值,这就是为什么当示例只是来自 ASCII 集中的示例时,这两者经常被混淆。
97
是 letter 的 UTF-16 编码单元值a
。
基本上这个数字与给定字符的 UTF-16 代码单元有关。
这些是代表字符的 ASCII 值。
它们是字符代码,通常称为 ASCII 值。
但是,从技术上讲,字符代码不是 ASCII。
它们是对应 ascii 的十进制表示: http ://www.asciitable.com/index/asciifull.gif 所以“a”是 97