题解 | 进制转换

进制转换

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

#include <stdio.h>
#include <string.h>
#include <math.h>
#define BUFFER_SIZE (50)

int convert_to_digit(char a) {
    if (a >= '0' && a <= '9') {
        return (a-'0');
    } else if (a >= 'A' && a <= 'F'){
        return (a-'A'+10);
    } else{
        printf("error: %c\n", a);
    }

    return 0;
}

int main() {
    char buffer[BUFFER_SIZE];
    scanf("%s", buffer);
    char hex[BUFFER_SIZE];
    memcpy(hex, buffer+2, sizeof(buffer)-2);
    // printf("%s\n", hex);

    int result = 0;
    int index = 0;
    for (int i=strlen(hex)-1; i>=0; i--) {
        int temp = convert_to_digit(hex[i]);
        // printf("digit: %d\n", temp);
        result += pow(16, index) * temp;
        // printf("result: %d\n", result);
        index ++;
    }

    printf("%d\n", result);

    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务