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

时间:2009-11-08 17:55:07

标签: c ascii

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

8 个答案:

答案 0 :(得分:11)

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

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

  @
 @ @
@@@@@
@   @
@   @

我的代码“真的知道”不是“A”。它只知道65显示为该模式。因为,正如你所说,你不能直接存储字母,只能存储二进制数字。

答案 1 :(得分:6)

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

答案 2 :(得分:6)

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

修改 电脑只需0/1。一串字符只是一堆0/1流:0110010101 ...人与计算机之间有一个契约:8位表示为一个字符(好吧,有Unicode,UTF- 8等)。并且,'A'是65,依此类推。

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

  • 如果您编写一个绘制角色的函数,则当输入为65时,您有责任绘制'A'。
  • 在过去,假设我们在DOS中,计算机在数字65上绘制'A'。这种关系通常存储在内存中。 (当时没有图形,只有文本,这个表可以调整以扩展字符。我记得Norton DOS实用程序,如NDD / NCD改变了这个表,以绘制一些不在常规ASCII代码中的特殊字符。)

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

答案 3 :(得分:3)

ASCII表只是一个商定的值和字符映射。

当指示计算机将由数字表示的字符写入屏幕时,它只找到对应图像的数字。图像对计算机没有任何意义,它可能是一个看起来像用户的'A'或雪人的图像。

答案 4 :(得分:1)

计算机中的所有内容都存储为数字。这就是软件解释那些重要的数字的方式。

ASCII是将数字65映射到字母“A”的标准。他们本可以选择66或14代表'A',但他们没有。这几乎是武断的。

因此,如果您将数字65放在某处的计算机内存中,则将该内存视为ASCII的一段代码会将65映射为“A”。将内存视为完全不同的格式的另一段代码可能会将其完全转换为其他内容。

答案 5 :(得分:1)

  

那么这种转换怎么可能发生?

此转化仅称为character encoding。计算机只能理解字节和人类(平均=))只能理解字符。计算机粗略地表示所有字节和属于那些字节的所有字符的映射,以便它能够以人类友好的方式呈现数据。它都是基于软件的(因此不是基于硬件的)。操作系统通常是照顾这个的人。

ASCII是最古老的字符编码之一。现在我们应该全力以UTF-8以避免Mojibake

答案 6 :(得分:1)

将输入的ASCII值转换为相应字符的代码为

int a;
printf("enter the ASCII value : ");
scanf("%d",&a);
printf("%d is the ASCII of %c",a,a);

答案 7 :(得分:0)

它基于60年代发明的查找表。