[英]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.