#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef enum{
STR_BINARY,
STR_DECIMAL,
STR_HEX,
STR_UNKNOW,
}STR_NUMBER_TYPE;
STR_NUMBER_TYPE CheckStrNumType(const char *Str){
//HEX
if(NULL != strstr(Str , "0x") || NULL != strstr(Str ,"0X")){
printf("%s is hex\n",Str);
return STR_HEX;
}
return STR_UNKNOW;
}
int power(int x,int n)
{
int i;
int num = 1;
for(i=1;i<=n;i++)
num*=x;
return num;
}
unsigned int StrHexToInt(char *Str){
int StrLen = strlen(Str) , i = 0 , sum=0;
char tmp[10]={'\0'} , *ptr = Str;
while('\0' != *ptr )
{
tmp[i] = toupper(*ptr);
i++;
ptr++;
}
ptr = tmp + 2;
i = 0;
while('\0' != *ptr){
if(isalpha(*ptr)){
sum += ((int)*ptr - 55) * power(16 , StrLen -3);
}else{
sum += ((int)*ptr - 48) * power(16 , StrLen -3);
}
ptr++;
StrLen--;
}
printf("StrHexToInt = %x\n",sum);
return sum;
}
int Test(void){
STR_NUMBER_TYPE ret = STR_UNKNOW;
char *hexstr = "0x6a0";
char *hexstr1 = "0X9B00";
ret = CheckStrNumType(hexstr1);
switch(ret){
case STR_BINARY:
break;
case STR_DECIMAL:
break;
case STR_HEX:
StrHexToInt(hexstr1);
break;
default:
break;
}
}
int main(int argc, char* argv[])
{
Test();
return 0;
}
2014年8月17日 星期日
16進制(文字)轉10進制(數字)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言