我今天遇到了以下代码行:
为什么 'a' 是 97?这些数字有什么关联吗?
int c = (int)'c';
我之前不知道你能将 char
转换为 int
。所以我试了一下,发现 a=97,b=98,c=99,d=100 等等...为什么 'a' 是 97?这些数字有什么关联吗?
int c = (int)'c';
我之前不知道你能将 char
转换为 int
。所以我试了一下,发现 a=97,b=98,c=99,d=100 等等...到目前为止,其他人都提到了ASCII。这是一个非常有限的观点 - 它适用于'a'
,但对于任何带重音符号等的字符并不适用 - 这些字符可以很容易地被char
表示。
char
只是一个无符号16位整数,它是一个UTF-16 代码单元。通常情况下它等价于一个Unicode字符,但并非总是如此 - 有时需要多个代码单元来表示一个完整的字符。有关详细信息,请参见System.Char
文档。
从char
到int
的隐式转换(在代码中不需要强制转换)只是以自然、非丢失方式将这个16位无符号整数转换为32位有符号整数 - 就像你有一个ushort
一样。
请注意,ASCII中的每个有效字符在UTF-16中具有相同的值,这就是为什么当示例仅来自ASCII集时,两者经常会混淆的原因。
97
是字母a
的UTF-16码位值。
这个数字基本上与给定字符的UTF-16编码有关。
char
是一个 UTF-16 代码单元,而不是 ASCII 字符。 - RoadieRich它们是字符代码,通常被称为ASCII值。
从技术上讲,这些字符代码并不是ASCII码。