将非数字char转换为int?

时间:2013-04-09 15:36:07

标签: c#

我今天遇到了这行代码:

int c = (int)'c';

我不知道你可以将char投射到int。所以我测试了它,发现a = 97,b = 98,c = 99,d = 100等等......

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

5 个答案:

答案 0 :(得分:11)

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

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

charint的隐式转换(您的代码中不需要强制转换)只是将16位无符号整数转换为自然的非有符号整数,非整数 - 愚蠢的方式 - 就像你有一个ushort

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

答案 1 :(得分:7)

97是字母a的UTF-16代码单位值。

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

答案 2 :(得分:-1)

答案 3 :(得分:-1)

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

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

答案 4 :(得分:-1)

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