美文网首页
C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出

C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出

作者: 广陵周惊蛰 | 来源:发表于2020-01-09 16:20 被阅读0次

    问题描述:提取字符串中的十六进制数字并转换为一个十进制整数输出

    源代码:

    /*十六进制转换成十进制*/
    #include<stdio.h>
    int main(void)
    {
        int i,k;
        char hexad[80],str[80];
        long number;
        
        printf("Enter a string:");
        i=0;
        while((str[i]=getchar())!='\n')
            i++;
        str[i]='\0';
        
        /*过滤非十六进制字符后生成新字符串*/
        k =0;
        for(i=0;str[i]!='\0';i++)
            if(str[i]<='9'&&str[i]>='0'||str[i]<='f'&&str[i]>='a'||str[i]<='F'&&str[i]>='A'){/*判断是数字字符*/
                hexad[k]=str[i];
                k++;
            }
                hexad[k]='\0';
                
        /*输出十六进制新字符串*/
        printf("New string:");
        for(i=0;hexad[i]!='\0';i++)
            putchar(hexad[i]);
        printf("\n");
        
        /*转换为十进制数*/
        number=0;
        for(i=0;hexad[i]!='\0';i++){
            if(hexad[i]<='9'&&hexad[i]>='0')
                number=number*16+hexad[i]-'0';
            if(hexad[i]<='F'&&hexad[i]>='A')
                number=number*16+hexad[i]-'A'+10;
            if(hexad[i]<='f'&&hexad[i]>='a')
                number=number*16+hexad[i]-'a'+10;   
                
        } 
        printf("Number=%ld\n",number);
        return 0;
     } 
    

    运行结果:

    进制转换

    程序心得:

    if(hexad[i]<='f'&&hexad[i]>='a')
        number=number*16+hexad[i]-'a'+10;   
    

    这里要注意“+10”

    程序参数:

    • 输出大小: 148.888671875 KiB
    • 编译时间: 0.31s

    相关文章

      网友评论

          本文标题:C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出

          本文链接:https://www.haomeiwen.com/subject/gzwyactx.html