提问:字符串 0x00002010 如何转为int?

dark012002 2004-07-07 08:45:11
用那个函数?
...全文
450 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dark012002 2004-07-07
  • 打赏
  • 举报
回复
好罢,我承认我有rpwt
为了所谓的美感而不放弃0x00000...的形式,这一定是上天的惩罚

sscanf可用
dark012002 2004-07-07
  • 打赏
  • 举报
回复
试过了,同atoi

估计是遇到0就终止了
pacman2000 2004-07-07
  • 打赏
  • 举报
回复
sscanf用%x读如何?
dark012002 2004-07-07
  • 打赏
  • 举报
回复
jie,现在服务器RP
dark012002 2004-07-07
  • 打赏
  • 举报
回复
本来想偷懒的....结账
menubutton 2004-07-07
  • 打赏
  • 举报
回复
同上
riitso 2004-07-07
  • 打赏
  • 举报
回复
没有这样的函数
自己写一个吧
tuxw 2004-07-07
  • 打赏
  • 举报
回复
可能不行,atoi 转换的字符串是十进制格式的

十六进制的需要自己一位位的转换,可以从 0x 的后一位开始,逐个字符转换为一个十六进制数,加到一个累加变量中,左移 4 位,再一个字符,直到字符串尾或遇到一个非法字符
dark012002 2004-07-07
  • 打赏
  • 举报
回复
这个试过了,不行...

就是将0去掉后效果也同strtol
zxl_lim 2004-07-07
  • 打赏
  • 举报
回复
int atoi( const char *string );
dark012002 2004-07-07
  • 打赏
  • 举报
回复
亚,是我弄错了。sscanf是可行的

传入指针时大家一定记得要用unsigned ,可别像我一样
wandou999 2004-07-07
  • 打赏
  • 举报
回复
strtoul(s,NULL,10)
dark012002 2004-07-07
  • 打赏
  • 举报
回复
sscanf有bug....在最低位很大时,如0x000367fa 会算错

各种long unsigned 都试过,无效...
Flynxea 2004-07-07
  • 打赏
  • 举报
回复
sscanf可以
pacman2000 2004-07-07
  • 打赏
  • 举报
回复
这都被发现了。。。 -_-b
riitso 2004-07-07
  • 打赏
  • 举报
回复
楼上的和pacman(吃豆豆?)的办法都可以!
goodname 2004-07-07
  • 打赏
  • 举报
回复
#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main()
{
string str="0x00002010";
int num;
istringstream istr(str);
istr>>std::hex>>num;

cout<<num<<endl;

return 0;
}
sandrowjw 2004-07-07
  • 打赏
  • 举报
回复
strtol的base指定16,连0x都不用去。

69,373

社区成员

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

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