#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)
沒有留言:
張貼留言