映射到ASCII的Character的底层实现是什么?

What is the underlying implement of Character that maps to ASCII?

本文关键字:实现 是什么 Character ASCII 映射      更新时间:2023-10-16

我不知道JAVA/c++怎么能这么快得到字符的ASCII码。

我想知道底层的映射机制。

例如,我知道'a'等于96,但我想知道当JAVA/c++看到这个字符时,它如何将'a'转换为96?

非常感谢!

我的意思是,我知道'a'实际上是计算机内存中的01100000,但是JAVA或c++如何知道'a'是01100000,而不是0100001或其他数字?它怎么能这么快就知道a的数字?

实际情况是,它不能这么快地将字符"转换"为ASCII。字符存储为 ASCII,因此不需要转换。

也就是说,计算机在内存中存储96,而不是'a'。你在屏幕上看到的"a"只是为了显示。

因此,当你的程序说:
char ch = 'a';
实际上,这相当于这样写:
char ch = 96;

char看作是一个整数类型。

所以当你打印一个字符串时,你的计算机读取每个字符,例如:并查找它应该为角色画什么。这取决于你的字体。所以它检查96的字体条目是什么,然后复制像素,或者画一些相应的矢量图形。因此,您看到的"a"需要计算机相当长的时间来显示(它不需要很长时间,但可能仍然需要数千个时钟周期)。

在Java中试试这段代码。

public class test {
    public static void main(String[] args) {
        System.out.println("a".getBytes()[0]);
    }
}