C/C++: 十六进制转10进制源码

十六进制转十进制算法与sscanf用法
本文介绍了两种将十六进制字符串转换为十进制整数的方法:一种是通过自定义函数逐字符解析并计算;另一种是使用C标准库函数sscanf直接完成转换。自定义函数通过遍历输入字符串,并根据字符确定对应的十进制数值来实现转换。

int hex_char_value(char c) { if(c >= '0' && c <= '9') return c - '0'; else if(c >= 'a' && c <= 'f') return (c - 'a' + 10); else if(c >= 'A' && c <= 'F') return (c - 'A' + 10); assert(0); return 0; } int hex_to_decimal(const char* szHex, int len) { int result = 0; for(int i = 0; i < len; i++) { result += (int)pow((float)16, (int)len-i-1) * hex_char_value(szHex[i]); } return result; }

写完以上代码后,又突然想到可以用 sscanf() 实现同样的功能:

int x;

sscanf("abc", "%x", x);

//x = 2748

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值