将十六进制字符串转换成十进制数字

Write a function that parses a hex number as a string into a decimal integer.

The function header is as follows:

int parseHex(const char * const hexString)

For example, hexString “A5” is 165 (10*16+5=165). So, parseHex(“A5”) returns 165.

int parseHex(const char * const hexString) 
{
    if(hexString == NULL){
        cout << "error !!!";
        return 0;
    }

    int result = 0;
    int len = strlen(hexString);

    for(int i = 0; i < len; i++){
        if(hexString[i] >= 'A' && hexString[i] <= 'F'){
            result = result * 16 + (hexString[i] - 'A' + 10);           
        }else{
            result = result * 16 + (hexString[i] - '0') ;
        }
    }
    return result;
}

如果要将10进制的数字以16进制的数形式输出来呢?
C语言中有一种输出格式可以很快的实现这一想法。

int a;
scanf("%d", &a);
printf("%d\n", a);
printf("%x\n", a);

这样就可以将10进制的数字以16进制的数字输出了。
如输入10进制数 2333333
输出16进制数 239a95

你可能感兴趣的:(简单编程)