0

所以我有一个这样的字符串:“MULTR12”

我想将 '1' 和 '2' 作为两个单独的整数。我该怎么做呢?以前,我简单地认为它是:

char *string = "MULTR12";
val = string[5];

但是我得到了一个非常奇怪的 val 而不是 1 的值,就像我想要的那样。任何人都可以帮忙吗?谢谢!

4

4 回答 4

5

这就是您将 a 转换charint..

int x = string[5] - '0';

这里有一些解释.. 每个字符在内存中都表示为一个 ASCII 字符,A将会65和类似。这也适用于数字,因此0在 ASCII 中 is 48, 1is49等。

0现在,当我们从任何数字的 ASCII 表示中减去时。假设数字是5,这就是我们实际在做的事情..

int x = 53 - 48

这给了我们5一个整数。换句话说,我们正在计算数字 ASCII 表示与 ASCII 表示的位移0

于 2013-04-21T03:36:54.183 回答
2

有点hackish但尝试

val = string[5] - '0';

无耻地从这里偷走

您在上面尝试做的基本上是采用 char '1' 的 ASCII 表示并将其转换为 int,产生 49。(可能不是您所期望的)

于 2013-04-21T03:38:05.363 回答
1

你可以这样做:

int num = string[ 5 ] - '0';
于 2013-04-21T03:37:58.757 回答
0

实际上你得到了一个奇怪的值,因为你试图改变一个固定的字符串的值。首先取一个新数组为 char str[]="Multr12"; 现在您可以访问 str[5]...试试这个

于 2013-04-21T09:13:09.753 回答