所以我有一个这样的字符串:“MULTR12”
我想将 '1' 和 '2' 作为两个单独的整数。我该怎么做呢?以前,我简单地认为它是:
char *string = "MULTR12";
val = string[5];
但是我得到了一个非常奇怪的 val 而不是 1 的值,就像我想要的那样。任何人都可以帮忙吗?谢谢!
这就是您将 a 转换char
为int
..
int x = string[5] - '0';
这里有一些解释.. 每个字符在内存中都表示为一个 ASCII 字符,A
将会65
和类似。这也适用于数字,因此0
在 ASCII 中 is 48
, 1
is49
等。
0
现在,当我们从任何数字的 ASCII 表示中减去时。假设数字是5
,这就是我们实际在做的事情..
int x = 53 - 48
这给了我们5
一个整数。换句话说,我们正在计算数字 ASCII 表示与 ASCII 表示的位移0
。
有点hackish但尝试
val = string[5] - '0';
无耻地从这里偷走
您在上面尝试做的基本上是采用 char '1' 的 ASCII 表示并将其转换为 int,产生 49。(可能不是您所期望的)
你可以这样做:
int num = string[ 5 ] - '0';
实际上你得到了一个奇怪的值,因为你试图改变一个固定的字符串的值。首先取一个新数组为 char str[]="Multr12"; 现在您可以访问 str[5]...试试这个