65怎么翻译成'A'字符?

3 c ascii

在ASCII中,我想知道65如何翻译成'A'字符?据我所知,65可以用二进制表示,但'A'不是.那么这种转换怎么可能发生呢?

and*_*oke 11

计算机中的所有东西都是二进制的.所以C中的字符串是二进制值序列.显然,这对人类没有多大用处,因此制定了各种标准,人们决定哪些数值代表某些字母.在ASCII中,值65表示字母A.因此存储的值为65,但是每个人都知道(因为他们已经读取了ASCII规范)该值对应于字母A.

例如,如果我正在编写代码以在屏幕上显示文本,并且我收到值65,我知道设置某些像素并删除其他像素,以便像素排列如下:

  @
 @ @
@@@@@
@   @
@   @
Run Code Online (Sandbox Code Playgroud)

在任何时候我的代码"都不知道"是"A".它只知道65显示为该模式.因为,正如您所说,您不能直接存储字母,只能存储二进制数字.


nos*_*nos 6

'A'是65.只是你的显示设备知道当它将该值作为一个字符呈现时它应该将值65显示为A.


min*_*ang 6

这只是一个'定义'.ASCII定义整数值和字符之间的关系.对于实现,有一个表(你看不到它)进行这种翻译.

编辑: 计算机只需0/1.字符的流只是一堆0/1流:0110010101 ...有一个合同人与计算机之间:8位被表示为字符(行,有Unicode的,UTF-8和等).并且,'A'是65,依此类推.

在C/C++和任何其他语言中,字符串只是像整数数组一样处理.只有当您需要显示字符串时,才会将这些数字"翻译"为字符.此转换由硬件或软件完成:

  • 如果你编写一个绘制字符的函数,当输入为65时,你有责任绘制'A'.
  • 在过去,假设我们在DOS中,计算机在数字65上绘制"A".这种关系通常存储在内存中.(当时在没有图形,只有文本,此表可以进行调整,延长字符.我记得诺顿DOS工具,如NDD/NCD改变此表得出不是在常规ASCII码某些特殊字符.)

您可以在任何地方看到这种合同或定义.例如,汇编代码.你的程序最终将被翻译成机器代码:这也只是一堆0和1.但是,当只显示0和1时,很难理解.所以,有一个规则:比如101010表示"添加",1100表示​​"mov".这就是为什么我们可以编程像"添加eax,1",它最终会被解码为0/1s.

  • 实际上,在一种字体中,数字曲线定义了插槽号65中"A"字形的轮廓. (2认同)