美文网首页
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