您的位置:首页 > 其它

16进制字符串转换成10进制数据

2010-10-30 11:04 1581 查看
//16进制字符串转换成10进制数据
#include "stdafx.h"
#include <string.h>
bool IsValidateStr16(const char *str);
int StrToNumber16(const char *str);
int Char16ToInt(char c);

int main(int argc, char* argv[])
{
int num;
char str[] = "00Ff";
bool flag;
flag = IsValidateStr16(str);
if (true == flag)
{
printf("The str is ValidateStr16/n");
num = StrToNumber16(str);
printf("The 10 numbers is:%d/n", num);
}
else
printf("The str is not ValidateStr16/n");

return 0;
}

bool IsValidateStr16(const char *str)
{
int len,i;
if (NULL == str)
{
return false;
}
len = strlen(str);
for (i = 0; i < len; i++)
{
if (!((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'F')|| (str[i] >= 'a' && str[i] <= 'f')))
//满足条件之一0~9或者a~z或者A~Z都是合法的十六进制字符
return false;
}
return true;
}

int StrToNumber16(const char *str)
{
int len,i,num;
num = 0;//使用数据必须初始化否则产生不确定值
len = strlen(str);
for (i = 0; i < len; i++)
{
num = num*16 + Char16ToInt(str[i]);/*十六进制字符串与10进制的对应数据*/
}
return num;

}

int Char16ToInt(char c)
{
int num;
num = 0;//
switch (c)
{
case '0':
num = 0;
break;
case '1':
num = 1;
break;
case '2':
num = 2;
break;
case '3':
num = 3;
break;
case '4':
num = 4;
break;
case '5':
num = 5;
break;
case '6':
num = 6;
break;
case '7':
num = 7;
break;
case '8':
num = 8;
break;
case '9':
num = 9;
break;
case 'a':
case 'A':
num = 10;
break;
case 'b':
case 'B':
num = 11;
break;
case 'c':
case 'C':
num = 12;
break;
case 'd':
case 'D':
num = 13;
break;
case 'e':
case 'E':
num = 14;
break;
case 'f':
case 'F':
num = 15;
break;
default:
break;
}
return num;
}


参考来源:http://www.cnblogs.com/k-eckel/articles/188523.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: