题解 | 进制转换

进制转换

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

#include <stdio.h>
#include <string.h>

int main() {
    char s[50];
    int n=0,sum=0;
    scanf("%s",s);
    for(int i=2;i<strlen(s);i++){
        if(s[i]>='0'&&s[i]<='9'){
            n=s[i]-'0';
        }
        else if(s[i]>='A'&&s[i]<='F'){
            n=s[i]-'A'+10;
        }
        sum=sum*16+n;
    }
    printf("%d\n",sum);
    return 0;
}

核心思路

  1. 跳过前缀:通常十六进制以 "0x" 或 "0X" 开头,下标从2开始处理。
  2. 逐位转换:遍历每个字符,若为 '0'~'9' 则映射为 0~9;若为 'A'~'F' 则映射为 10~15。
  3. 累加计算:sum = sum * 16 + 当前位值。
  4. 输出结果:直接打印 sum。
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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