十六进制到十进制转换

2018-04-18  本文已影响0人  Auuuuu_

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )/* 什么叫多组同时输入 */

输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。

输入例子1:
0xA

输出例子1:
10

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

#define OK (0)
#define ERROR (-1)
  
int main(void)  
{  
    char str[200] = {0};  /* 大小可控? */

    while(scanf("%s", &str)) 
    {  

        int len = strlen(str);
        int i;
        int num = 0;
        
        if(str[0] != '0' || str[1] != 'x')
        {
            printf("\r\nEnter error.\r\n");
            return ERROR;       
        }
        
        for(i = 2; str[i]; i++)
        {
            if(str[i] >= '0' && str[i] <= '9')
                num = num*16 + str[i] - '0';
            else if(str[i] >= 'A' && str[i] <= 'E')
                num = num*16 + 10 + str[i] - 'A';
            else
                return ERROR;
        }
        
        printf("%d\r\n", num);
    } 
    
    return OK; 
}  
上一篇下一篇

猜你喜欢

热点阅读