题解 | #进制转换#

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

#include <stdio.h>

//麻了麻了,对于一个写嵌入式的程序员太难了,C库函数我一个也不记得

char char2dec(char c) {
    if((c >= 'A') && (c <= 'F')) {
        return c - 'A' + 10;
    }
    
    if((c >= 'a') && (c <= 'F')) {
        return c - 'a' + 10;
    }
    
    if((c >= '0') && (c <= '9')) {
        return c - '0' + 0;
    }
    
    return 0;
}

int power(unsigned int a, unsigned int b) {
    int i = 0;
    int v = 1;
    if(b <= 0) {
        return 1;
    }
    
    for (i = 0; i < b; i++) {
        v *= a;
    }
    return v;
}

int main(void)
{
    int i = 0;
    int len = 0;
    char arr[108] = "\0";
    int num = 0;
    int ch = 0;
    fgets(arr, sizeof(arr), stdin);
    //0xAA\n
    len = strlen(arr) - 3;

    for (i = 0; i < len; i++) {
        ch = char2dec(arr[strlen(arr) - 2 - i]);
        num += ch * power(16, i);
    }
    
    printf("%d", num);
    return 0;
    
    
}



全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务