繁体   English   中英

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

[英]cast one element of char array to int

我有char数组:

char c[10]="ff213";

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

int i=atoi(c[2]);

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

int i=(int)c[2];

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

像这样:

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM