我们在课堂上学习 ASCII 表,128 个字符中的每个字符都有一个从 0 到 128 的唯一数字来表示它。例如“a”是 97(二进制 97 是 1100001)。“%”是 37(二进制 37 是 0100101)。(我知道对于 7 的固定长度,我们应该允许二进制数以 0 开头)
如果 97 代表“a”,那么什么代表字符串“97”?整数 97 代表什么?
我们在课堂上学习 ASCII 表,128 个字符中的每个字符都有一个从 0 到 128 的唯一数字来表示它。例如“a”是 97(二进制 97 是 1100001)。“%”是 37(二进制 37 是 0100101)。(我知道对于 7 的固定长度,我们应该允许二进制数以 0 开头)
如果 97 代表“a”,那么什么代表字符串“97”?整数 97 代表什么?
我认为你的问题是基于这样一个概念,即给定整数、字符串或其他类型的值的表示,你可以确定类型和值。你不能。
在大多数数字计算机体系结构中,数据是位,以连续的 8 位字节访问。您可以取一个字节,将其视为一个非负整数,并以二进制、八进制、十进制、十六进制……来表示它。当一个位本身表示一个值时,使用二进制。十六进制是首选,因为它紧凑且易于转换为二进制。当整个字节对人类有一些基数值时,使用十进制,这使其成为负整数的选择。
那么,给定字节 97(十进制),例如来自 1 字节文件或内存地址,类型和值是什么?唯一知道的方法是通过某种共同的理解:协议、声明、约定、规范、数据映射等。换句话说,沟通。完整的通信由数据和伴随的或单独的元数据组成,这些元数据指示如何解释字节。
97₁₀ = 61₁₆ = 01100001₂ 可能是:
因此,将您的问题改写为:代表“a”的 97 和代表整数 97 的 97 有什么区别?答案在于元数据,而不是字节。
好吧,字符串“97”由两个字符组成,因此需要两个 ascii 代码,一个用于“9”,另一个用于“7”。
所以答案是 57 和 55
char
仅当我们使用或将任何unsigned int
值强制转换为 ASCII 值时才会返回char
。因此,根据您的问题, 97 可以用int
数据类型表示。但是如果你想要 97 作为字符,那么你应该编写以下代码:
char c[2], i;
c[0]=57;
c[1]=55;
for (i=0; i<2; i++) printf("%c", c[i]);