char 和 int 类型如何转换?

robin平安 2012-01-08 01:37:45
情况如下:

int a;
char arr[] = "123456";

比如我想取 arr[0]的值 '1',将它付给a;

应该如何操作?

atoi()好像能操作数组,对于单个char 我还没弄懂。

还有就是逆向,int 如何转换成 char 类型呢?
...全文
255 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kaile 2012-01-13
  • 打赏
  • 举报
回复
a = arr[0]

arr[0] = a
aozhi 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ivers0n 的回复:]

引用 9 楼 mingliang1212 的回复:

将8楼的4改成3


求指教
[/Quote]
你给的是ASCII码0x31。
IVERS0N 2012-01-13
  • 打赏
  • 举报
回复
我错了
IVERS0N 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mingliang1212 的回复:]

将8楼的4改成3
[/Quote]

求指教
Ever_lover 2012-01-13
  • 打赏
  • 举报
回复
直接减‘0’,简单明了
赵4老师 2012-01-13
  • 打赏
  • 举报
回复
a=(int)(arr[0]-'0');
daan123456 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]

a = arr[0] - '0';就可以了。
‘1’assic码 是 49
'0' 是 48,所以减一下就是你要的值 1 .
int 转 char 也是一样, a + '0'就可以了,只限于0-9和单个字符的转换。
[/Quote]

就是这样
薛定谔之死猫 2012-01-13
  • 打赏
  • 举报
回复

#include <stdio.h>

int main(int argc, char *argv[])
{
int a;
char arr[]="123456";
a = 0xff & arr[0];
printf("%d\n",a);
printf("%c\n",(char)a);
return 0;
}
楚天乐 2012-01-13
  • 打赏
  • 举报
回复
char类型的话
你可以直接
arr[i]-'\0'就可以得到相应数字了

AndyZhang 2012-01-12
  • 打赏
  • 举报
回复
如果都是数字,那就+48转换成char, -48转换为数字啦
iamnobody 2012-01-12
  • 打赏
  • 举报
回复
将8楼的4改成3
iamnobody 2012-01-12
  • 打赏
  • 举报
回复
不要用4楼的做法。
cchn2011 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]
a = arr[0] - '0';就可以了。
‘1’assic码 是 49
'0' 是 48,所以减一下就是你要的值 1 .
int 转 char 也是一样, a + '0'就可以了,只限于0-9和单个字符的转换。
[/Quote]
+1
小耸 2012-01-08
  • 打赏
  • 举报
回复
另一种解决方法,如果你一定要用atoi的话,可以这样:

int a;
char arr[] = "123456";
char tmp[2];
tmp[0] = arr[0];
tmp[1] = '\0';
a = atoi(tmp);
IVERS0N 2012-01-08
  • 打赏
  • 举报
回复

int a;
char arr[] = "123456";
memcpy(&a,arr,1);


逆向 同理
cliffbaby 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]

a = arr[0] - '0';就可以了。
‘1’assic码 是 49
'0' 是 48,所以减一下就是你要的值 1 .
int 转 char 也是一样, a + '0'就可以了,只限于0-9和单个字符的转换。
[/Quote]

++
li08240418 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]
a = arr[0] - '0';就可以了。
‘1’assic码 是 49
'0' 是 48,所以减一下就是你要的值 1 .
int 转 char 也是一样, a + '0'就可以了,只限于0-9和单个字符的转换。
[/Quote]

+++
黯然 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]

a = arr[0] - '0';就可以了。
‘1’assic码 是 49
'0' 是 48,所以减一下就是你要的值 1 .
int 转 char 也是一样, a + '0'就可以了,只限于0-9和单个字符的转换。
[/Quote]
++
gqjjqg 2012-01-08
  • 打赏
  • 举报
回复
a = arr[0] - '0';就可以了。
‘1’assic码 是 49
'0' 是 48,所以减一下就是你要的值 1 .
int 转 char 也是一样, a + '0'就可以了,只限于0-9和单个字符的转换。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧