怎样将char型转化成int型

hansiman 2009-06-10 07:33:41
是这样的 我有一个char型数组里面每个元素放的是十六进制,例如char buf[4]={0x07,0xd7,0x07,0xd0};我要将buf[0]和buf[1]放到一起转化成int型就是我要这样的结果:07d7转化成十进制就是2007,然后buf[2]和buf[3]连在一起 07d0 十进制是2000,
开始想用sprintf,
int int_buf[4];
for(int i=0;i<4;i++)
sprintf(int_buf,"%d",buf[i]);
报错:error C2664: 'sprintf' : cannot convert parameter 1 from 'int' to 'char *'


希望帮我解决一下我总是涉及到char向int转的问题实在没找到好方法
...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhao1zhong6 2009-06-10
  • 打赏
  • 举报
回复
zhao1zhong6 2009-06-10
  • 打赏
  • 举报
回复
飞天御剑流 2009-06-10
  • 打赏
  • 举报
回复
sprintf可以这样改:(假设是16位int)

sprintf(int_buf,"%d",*(int*)buf); //前两字节

sprintf(int_buf,"%d",*(int*)(buf+2)); //后两字节

至于用buf、buf+2还是buf+1、buf+3,要看你的环境了,试验一下再调调就可以了。
moon2008moon 2009-06-10
  • 打赏
  • 举报
回复
char buf[4]={0x07,0xd7,0x07,0xd0};
int int_buf[2];
int count = 15;
for(int i=0;i <4;i+=2)
{
int_buf[i%2] = (unsigned char)buf[i] <<8|(unsigned char)buf[i+1];
printf("%i\n",int_buf[i%2]);
}
oyxiaoyu0 2009-06-10
  • 打赏
  • 举报
回复
int int_buf[4]; 表示一个整形数组,每个数组元素是4个字节大小的整形。而char数据是每个元素是一个字节的char类型的。
goodname 2009-06-10
  • 打赏
  • 举报
回复
char buf[4]={0x07,0xd7,0x07,0xd0};

printf("%u\n",((unsigned char)buf[0]<<8)|(unsigned char)buf[1]);

printf("%u\n",((unsigned char)buf[2]<<8)|(unsigned char)buf[3]);
zhao1zhong6 2009-06-10
  • 打赏
  • 举报
回复
自己写一个转换器花不了多长时间的.
char t=0x77;
int r=(int)t;
cout<<r;
输出 119

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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