如您所知,当我们谈论字符序列时,我们有一些诸如ASCII和Unicode之类的编码,...我想知道操作系统如何理解65应该表示为'A'字符。换句话说,OS如何将这种二进制或十六进制数字表示形式转换为图形(字符)表示形式?在Windows或Linux等操作系统上,这是如何发生的?不幸的是,我没有找到有关此操作系统底层概念的任何信息。
答案 0 :(得分:1)
这取决于字体。最简单的字体就是像 A 这样的小图片的编号列表。
/* 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从显示{
更改为显示ä
,以便他们可以写自己的语言。
现代字体更加先进,并且包含笔触,线条和曲线,而不是像这样的小图片,但是同样的概念也适用。
答案 1 :(得分:0)
程序员必须指定X位置的值是字符,整数,可执行指令等。它不会自动发生。操作系统代码需要跟踪每个位置存储的数据类型。
换句话说,操作系统如何将这种二进制或十六进制数字表示形式转换为图形(字符)表示形式?
要将数字转换为字符串,必须编写或使用库代码来完成。
String Convert to Hex (BYTE VALUE)
string digits [16] = '0', '1', '2', '3', ..., 'A', 'B', 'C', ... 'F' ;
Result = digits [value >> 4] + digits [value AND FF#16]
Return Result