将char数组的一个元素转换为int

时间:2013-10-09 09:40:05

标签: c casting char

我有char数组:

char c[10]="ff213";

我需要将一个char元素转换为int。我试过这个:

int i=atoi(c[2]);

但我收到运行时错误。这个:

int i=(int)c[2];

但它返回50而不是2。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

像这样:

const int digit2 = c[2] - '0';

这是有效的,因为C保证十进制数字的编码是顺序的,没有任何间隙。

这不是(你可以看到)一个“演员”,它只是简单的计算。如果你转换角色,你会得到编码的表示形式为整数,在你的情况下是50(十六进制0x32),它是数字2的ASCII(和UTF-8,以及一堆其他编码)编码。

答案 1 :(得分:1)

您遇到错误的原因是atoi()需要一个字符串(即char*为以空字符结尾的字符串。)

不仅你给atoi()一个字符而不是一个指针,空字节('\0')只存在于第五个字符之后。

完成你所追求的目标的最简单方法是:

int i = c[2] - '0';

这样,'2'(50)的ascii代码被'0'(48)的ascii代码减去,并为i生成正确的答案。

相关问题