有没有把十六进制字符串转成数字的函数?类似atoi(char *)的,在线等!!!

edoch 2004-01-13 02:47:14
rt
...全文
1924 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lygfqy 2004-01-13
  • 打赏
  • 举报
回复
sprintf(buffer,"%x",abc);
myemailcn 2004-01-13
  • 打赏
  • 举报
回复
iTmp = atoi(buf);
itoa(iTmp, buf, 16);
iTmp = atoi(buf);
freeshoot 2004-01-13
  • 打赏
  • 举报
回复
我觉得这个最好用:

Convert strings to a long-integer value:
long strtol( const char *nptr, char **endptr, int base );

这是RUN-TIME LIBRARY里的函数,可以是任何进制。
DotLSong 2004-01-13
  • 打赏
  • 举报
回复
sscanf("1E3F8", "%02X", &nVar)
bluebohe 2004-01-13
  • 打赏
  • 举报
回复
sscanf
QunKangLi 2004-01-13
  • 打赏
  • 举报
回复
B16ToB10( const char *pszNum )
//参数要求:可以带0x前缀,也可不带前缀
{
int r = 0;
if( pszNum )
sscanf( pszNum, "%x", &r ) ;
return r ;
}
victor_cui 2004-01-13
  • 打赏
  • 举报
回复
//将任意进制(2~36)的数转换为10进制,参数step=16就是你要的
unsigned long AToD(string dvalue, unsigned step/*2~36*/)
{
if(step < 2 || step > 36) return NULL;

unsigned long result = 0;
unsigned maxPos = dvalue.length();
unsigned tv;
for(unsigned index = 0; index < maxPos; index++)
{
tv = dvalue[index];
if(isalpha(tv)){
if(islower(tv)) tv = toupper(tv);
tv -= char('A');
tv += 10;
if(tv > step) return unsigned (-1);
}
else if(isdigit(tv)){
tv -= char('0');
if(tv > step) return unsigned(-1);
}
else return unsigned long(-1);//invilad string
result += tv * mexp(step, maxPos - index - 1);
}
return result;
}
小李匪盗 2004-01-13
  • 打赏
  • 举报
回复
把它转化成10进制,再转化成数字如何?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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