如您所知,当我们谈论字符序列时,我们有一些编码,例如 ASCII 和 Unicode 以及...我想知道操作系统如何理解 65 应该表示为“A”字符。换句话说,操作系统如何将这种二进制或十六进制数字表示形式转换为图形(字符)表示形式?在 Windows 或 Linux 等操作系统中,这是如何发生的?不幸的是,我没有找到任何有关操作系统这一基本概念的信息。
最佳答案
这取决于字体。最简单的字体只是小图片的编号列表,例如 A。
这是 bitmap font in Linux 的示例:
/* 65 0x41 'A' */
0x38, /* 00111000 */
0x6c, /* 01101100 */
0xc6, /* 11000110 */
0xfe, /* 11111110 */
0xc6, /* 11000110 */
0xc6, /* 11000110 */
0xc6, /* 11000110 */
0x00, /* 00000000 */
数字 65 简单地映射到其他 8 个数字,这里以十六进制表示。这些注释有助于以二进制形式显示它们,如果你眯着眼睛,你可以辨认出由 1 绘制的“A”。
当系统想要显示第 65 个字符时,它会查看此表,然后将每个 0
位绘制为黑色,将每个 1
位绘制为白色(对于白底黑字文本,反之亦然)。这使得“A”出现。
是什么阻止你改变图片,让 65 显示为完全不同的角色?没有什么!人们经常这样做,例如瑞典人如何将字母 123 从显示 {
更改为显示 ä
,以便他们可以书写自己的语言。
现代字体更加先进,包含笔划、线条和曲线,而不是像这样的小图片,但概念相同。
关于linux - 二进制数如何表示为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56067841/