#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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.