关于字符串转整数型及反回来转换的问题?

xingfuniao 2009-05-18 09:40:59
怎么将字符串转换成整数?
例如char test[3]=0x0021C0;怎么转换成long l_test,结果是 8640.
char test 也有可能是2位的.

还有,怎么将8640转换回到 0x0021C0呢?

要用纯C语言哦.
...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-05-18
  • 打赏
  • 举报
回复
十六进制的不能用atoi();
使用sscanf();
如:
char test[10]="0x0021C0";怎么转换成long l_test,结果是 8640.
sscanf(test, "%X", &l_test);

怎么将8640转换回到 0x0021C0呢?
sprintf(test, "%#X", l_test); //test = "0X21C0"
int main(int argc, char *argv[])
{
long l_test;
char test[10]="0x0021C0";

sscanf(test,"%X", &l_test);
printf("string = %s integer = %d\n", test, l_test);

test[0] = '\0';
sprintf(test,"0x00%X", l_test); //test = "0x0021C0";
printf("string = %s integer = %d\n", test, l_test);

system("PAUSE");
return 0;
}
xingfuniao 2009-05-18
  • 打赏
  • 举报
回复
哦.0x2021C0 知道了,0x20*65536+0x21*256+0xC0

OK
xingfuniao 2009-05-18
  • 打赏
  • 举报
回复
atoi itoa 不对把,atoi 是将"2130"转换成int 2130,
我说的不是这个意思,我的是0x0021C0,是16进制的3个字节.

发表于:2009-05-18 09:46:442楼 得分:0
高字节21*256+0xC0就可以得到8640了;
直接将8640/256放高字节,8640%256放低字节就可以啦.

这个说的对
但如果这样呢char test[3]=0x2021C0,高字节怎么转呢??
lingyin55 2009-05-18
  • 打赏
  • 举报
回复
atoi转整型
itoa转字符串
具体用法查下msdn
liao05050075 2009-05-18
  • 打赏
  • 举报
回复
sscanf(),sprintf()
liuxu2559 2009-05-18
  • 打赏
  • 举报
回复
高字节21*256+0xC0就可以得到8640了;
直接将8640/256放高字节,8640%256放低字节就可以啦.
datacode 2009-05-18
  • 打赏
  • 举报
回复
atoi 和 itoa

69,373

社区成员

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

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