如何将指针字符串转换为整型

forabdm 2007-05-25 11:03:36
刚刚才解决了问题,现在又发帖,实在不好意思。可是我查不着。辛苦一下吧。
char*p="00040102";
CString str=_T("");
str.Format("%08X",atoi(p));
MessageBox(str,NULL,NULL);
弹出的值不是00040102。为啥。怎么能输出正确的值呢。谢谢
...全文
512 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng2000 2007-05-26
  • 打赏
  • 举报
回复
不是告诉你使用sscanf()吗? 得,我给你写出来吧.

str.Format("%08X",atoi(p));

=========>

int n;
sscanf(p, "%x", &n);
str.Format("%08X",n);
dai_weitao 2007-05-26
  • 打赏
  • 举报
回复
string类里面有方法,查查去吧
jixingzhong 2007-05-26
  • 打赏
  • 举报
回复
如果是必须使用 %08x,
可以这样:
n = strtol(p, NULL, 16); //"00040102" 被转换为 0x00040102
str.Format("%08x",atoi(p)); //%08x , OK
jixingzhong 2007-05-26
  • 打赏
  • 举报
回复
str.Format("%08d",atoi(p));

如果是 %08x,
那么数据被转换了。

因为 atoi(p) 得到的是 10进制的数值 00040102,
使用 %08x 得到的字符串当然不是 "00040102", 而是 00040102 转换成 16 进制后的数据串
forabdm 2007-05-26
  • 打赏
  • 举报
回复
谢谢,我学习太没有主动性了,以后注意。
forabdm 2007-05-26
  • 打赏
  • 举报
回复
明白了。谢谢各位。我这些函数的用法,以及参数都没有搞清楚,以后会认真的。
forabdm 2007-05-25
  • 打赏
  • 举报
回复
俺目的不是为了显示16进制。而是把char*p中,十六进制形式的数00040102转换为整型。如00000012,转换后是18。我显示出来,只是要看看结果对不对。怎么把它转换为int型呢?再帮俺想想呗
freshui 2007-05-25
  • 打赏
  • 举报
回复
为啥呢?

char*p="00040102";
CString str=_T("");
str.Format("%08d",atoi(p));
MessageBox(str,NULL,NULL);
呢?

你要显示00040102的话这样呗

char*p="00040102";
CString str(p);
MessageBox(str,NULL,NULL);
deng2000 2007-05-25
  • 打赏
  • 举报
回复
问题在于atoi()只接收十进制,而从你的意图看p="00040102"是16进制.
改成用sscanf()试试

64,637

社区成员

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

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