char到int转换得到ASCII

din*_*din 9 c#

这可能是一个不成熟的问题,可能是我遗漏了一些东西,但我的问题是

试图转换char到int拿到ASCII的那个值char,在大多数情况下,我得到正确/预期的ASCII的特定代码char,在某些情况下,我不知道.有人能解释一下为什么吗?

例子:

// Example 1:-   

Console.WriteLine((int)'a');

// gives me 97 perfect!

// Example 2:-

Console.WriteLine((char)1); gives me ?

// now 

Console.WriteLine((int )'?');

// this should give me 1, instead it gives me 9786 why?
Run Code Online (Sandbox Code Playgroud)

这发生在ASCII> 127或ASCII < 32.

Ale*_*kov 12

\01 是不可打印的字符,因为结果控制台可以自由使用任何替换使其可见.

此外,默认的Windows控制台不是非常友好的Unicode,因此当您打印超出默认可打印ASCII范围的字符时会发生奇怪的事情.