二进制数字如何表示为字符

时间:2019-05-09 21:29:05

标签: linux windows linux-kernel character-encoding operating-system

如您所知,当我们谈论字符序列时,我们有一些诸如ASCII和Unicode之类的编码,...我想知道操作系统如何理解65应该表示为'A'字符。换句话说,OS如何将这种二进制或十六进制数字表示形式转换为图形(字符)表示形式?在Windows或Linux等操作系统上,这是如何发生的?不幸的是,我没有找到有关此操作系统底层概念的任何信息。

2 个答案:

答案 0 :(得分:1)

这取决于字体。最简单的字体就是像 A 这样的小图片的编号列表。

这是一个enter image description here的示例:

    /* 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