【菜鸟之路】十六进制转十进制

来源:互联网 发布:淘宝店公告栏在哪里写 编辑:程序博客网 时间:2024/05/16 01:28

问题描述

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

备注

需注意int溢出情况;同时进制只是数字表示形式,在计算机内部只是二进制;

#include<stdio.h>#include<string.h>int main(){int a = 0;char str1[9] = { 0 };gets(str1);a = strlen(str1);int i = 0,j=0;long long int k = 1, b = 0;long long int sum = 0;for ( i = 0; i < a; i++){switch (str1[i]){    case '0':b = 0; break;case '1':b = 1; break;case '2':b = 2; break;case '3':b = 3; break;case '4':b = 4; break;case '5':b = 5; break;case '6':b = 6; break;case '7':b = 7; break;case '8':b = 8; break;case '9':b = 9; break;case 'A':b = 10; break;case 'B':b = 11; break;case 'C':b = 12; break;case 'D':b = 13; break;case 'E':b = 14; break;case 'F':b = 15; break;default:break;}k = 1;for ( j = 0; j < a-i-1; j++){k = k * 16;}sum =sum+ b * k;}printf("%lld", sum);return 0;}


0 0