C语言实现十六进制转换为十进制的方法

您所在的位置:网站首页 2A16进制转十进制 C语言实现十六进制转换为十进制的方法

C语言实现十六进制转换为十进制的方法

2023-10-02 14:49| 来源: 网络整理| 查看: 265

这篇文章主要为大家详细介绍了C语言实现十六进制转换为十进制的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下

题目描述

输入一个十六进制数字串,将其转换成为对应的整数并输出转换结果,遇到非十六进制数字或字符串结束符('\0')结束转换。

注意: 输入的字符串的长度不会超过100;转换后的值不会超出int类型的范围。

1.测试输入:55 //程序的输入不会有十六进制的前缀

预期输出:85

2.测试输入:f1r2 //程序的输入不会有十六进制的前缀

预期输出:241

补充知识

十六进制转换为十进制的做法:

算法分析

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include

#include

void conversion(char str[]){

    /**********  Begin  **********/

    int i=0,j=0,num=0,sum=0;

    int len=strlen(str);

  

    while(str[i]!='\0')

    {

        if(str[i]>='0'&&str[i]='a'&&str[i]='A'&&str[i]

    /**********  Begin  **********/

    int i = 0, j=0,num = 0, sum = 0,len=0;

    //int len = strlen(str);//这种方法会将非16进制数记录在内

    while ((str[i] >= 'a' && str[i] = 'A' && str[i] = '0' && str[i]

        //字符转数字

        if (str[i] >= '0' && str[i] = 'a' && str[i] = 'A' && str[i]

    int sum = 0;

    while(isspace(*str))

    {

        str++;

    }

    //此时 空格处理结束

    int index = 1;

    if(*str=='-' || *str=='+')

    {

        if(*str=='-')

        {

            index *= -1;

        }

        else

        {

            index = 1;

        }

        str++;

    }

     

    if((*str=='0') && (*(str+1)=='x'|| *(str+1)=='X'))

    {

        str+=2;

    }

    else

    {

        return INT_MAX;

    }

  

    while(isxdigit(*str))

    {

        if(isdigit(*str))

        {

            sum = sum*16 + (*str-'0');

        }

        else if(islower(*str))

        {

            sum = sum*16 + (*str-'a'+10);

        }

        else

        {

            sum = sum*16 + (*str-'A'+10);

        }

        str++;

    }

    if(*str == '\0')

        return sum * index;

    return INT_MAX;

}

int main()

{

    printf("%d\n", Get_0x("0x123ABcW"));

    printf("%d\n", Get_0x("0X123ABc"));

    printf("%d\n", Get_0x("      0x123ABc"));

    printf("%d\n", Get_0x("+0x123ABc"));

    printf("%d\n", Get_0x("-0x123ABc"));

    printf("%d\n", Get_0x("  +0x123ABc"));

    printf("%d\n", Get_0x("   -0x123ABc"));

    return 0;

}

调试结果

到此这篇关于C语言实现十六进制转换为十进制的方法详解的文章就介绍到这了,希望对你有所帮助。

来源:https://www.weidianyuedu.com



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3