#include <assert.h>
#include<iostream>
using namespace std;
// 返回字符串的长度, 不包括最后\0
int string_len(const char *s)
{
const char *p = s;
while(*p != '\0')
p++;
return p - s;
}
int HexChar2Value(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); //如果输入都不符合条件,提示错误,终止程序
//cout << c <<endl;
//cout<< (int) 'a' <<endl;
return 0;
}
int hex_to_decimal(const char *szHex)
{
int i;
int result; // 存放结果
int len; //字符串长度,不包括\0
int value; //保存字符串转化为整形的数值
result = 0;
len = string_len(szHex); //获取字符串长度
for(i =0; i < len ;i++)
{
value = HexChar2Value(szHex[i]); //字符串转化为整形数值
result += pow((double) 16, (int)len -i -1) * value; //从最高位开始计算
}
return result;
}
int main()
{
int result;
result = hex_to_decimal("f1"); //输入一个字符串 0x1001, 返回一个int数
cout << result <<endl;
return 0;
}
10. 编码:写一个c函数,实现将16进制表现形式的字符串转化为整数。例如,输入”1a”,返回26,输入“FE”,返回254
最新推荐文章于 2019-08-30 19:33:00 发布