将C中的十六进制转换为十进制数

马可·罗伯茨(Marco Roberts)

我正在实现一个程序,将C中的十六进制数字转换为十进制,但是我的程序无法正常工作。请帮助我使程序正常运行。

我不知道程序的哪一部分有错误。任何建议和答案都将有所帮助。

代码:

#include <stdio.h>
#include <math.h>

char hexNum[100];
int getDecimal();

int main(int argc, char **argv) {
    printf("Enter the hex number: ");
    int i = 0;
    char ch;
    while ((ch = getchar()) != '\n') {
        hexNum[i++] = ch;
    }
    hexNum[i] = '\0';
    printf("\nHexadecimal Number is: %s", hexNum);
    int n = getDecimal();
    printf("\nDecimal Number is: " + n);
    return 0;
}

int getDecimal() {
    //get to the units digit index
    int index = 0;
    while (hexNum[index + 1] != '\0') {
        index++;
    }
    //calculate the decimal value and store the result in result var
    int var = 0;  //store the decimal number
    int exp = 0;  //keep track of exponent of 16^x
    while (index >= 0) {
        int ch = hexNum[index--];
        switch (ch) {
        case 'a':
            var = var + (10 * pow(16, exp++));
            break;
        case 'b':
            var = var + (11 * pow(16, exp++));
            break;
        case 'c':
            var = var + (12 * pow(16, exp++));
            break;
        case 'd':
            var = var + (13 * pow(16, exp++));
            break;
        case 'e':
            var = var + (14 * pow(16, exp++));
            break;
        case 'f':
            var = var + (15 * pow(16, exp++));
            break;
        default:   //if its a digit
            var = var + ((ch-'0') * pow(16, exp++));
            break;
        }
    }
    return var;
}
4386427

更改此行:

    printf("\nDecimal Number is: " + n);

    printf("\nDecimal Number is: %d\n", n);

除此之外,您的算法太复杂,性能也很差。

最好使用前向迭代而不是后向迭代。就像是:

var = 0;
index = 0;
while (hexNum[index]  != '\0')
{
    var = 16 * var;

    switch (hexNum[index]) {
    case 'a':
        var = var + 10;
        break;
    case 'b':
        var = var + 11;
        break;
    ... and so on ...
    }
    ++index;
}
return var;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将十六进制十进制IP地址转换为c#中的点表示法十进制

来自分类Dev

将 uint16_t 十六进制数转换为 C 中的十进制数

来自分类Dev

将C中的十六进制字符串转换为十进制

来自分类Dev

十进制数转换为十六进制数

来自分类Dev

将十进制转换为十六进制值

来自分类Dev

PHP将十进制转换为十六进制

来自分类Dev

将十六进制转换为十进制

来自分类Dev

在cmake中从十进制转换为十六进制

来自分类Dev

使用python将十六进制十进制数字转换为十进制

来自分类Dev

使用 Linux 终端将十六进制数转换为十进制数

来自分类Dev

PHP将大十进制数转换为十六进制

来自分类Dev

将R中的十六进制转换为十进制

来自分类Dev

C ++将十六进制md5哈希转换为十进制整数

来自分类Dev

c函数将十六进制转换为十进制表示形式

来自分类Dev

使用 C 将 u64 十进制转换为十六进制

来自分类Dev

如何将十六进制数转换为DWORD而不是QWORD中存储的十进制?

来自分类Dev

ShellScript十六进制转换为十进制

来自分类Dev

在 Swift 中将十六进制转换为十进制

来自分类Dev

将字符串转换为十六进制,十进制和八进制

来自分类Dev

十六进制到java中的十进制转换

来自分类Dev

Ada中的十六进制十进制转换

来自分类Dev

如何将负十六进制转换为十进制

来自分类Dev

如何将负十进制转换为十六进制?

来自分类Dev

使用awk将第一列从十六进制转换为十进制

来自分类Dev

如何使用大脑将十进制转换为十六进制?

来自分类Dev

从类似csv的txt文件将十六进制转换为十进制

来自分类Dev

T-SQL将十六进制转换为十进制

来自分类Dev

编写将十六进制转换为十进制的函数

来自分类Dev

将4字节的十六进制转换为十进制值

Related 相关文章

  1. 1

    将十六进制十进制IP地址转换为c#中的点表示法十进制

  2. 2

    将 uint16_t 十六进制数转换为 C 中的十进制数

  3. 3

    将C中的十六进制字符串转换为十进制

  4. 4

    十进制数转换为十六进制数

  5. 5

    将十进制转换为十六进制值

  6. 6

    PHP将十进制转换为十六进制

  7. 7

    将十六进制转换为十进制

  8. 8

    在cmake中从十进制转换为十六进制

  9. 9

    使用python将十六进制十进制数字转换为十进制

  10. 10

    使用 Linux 终端将十六进制数转换为十进制数

  11. 11

    PHP将大十进制数转换为十六进制

  12. 12

    将R中的十六进制转换为十进制

  13. 13

    C ++将十六进制md5哈希转换为十进制整数

  14. 14

    c函数将十六进制转换为十进制表示形式

  15. 15

    使用 C 将 u64 十进制转换为十六进制

  16. 16

    如何将十六进制数转换为DWORD而不是QWORD中存储的十进制?

  17. 17

    ShellScript十六进制转换为十进制

  18. 18

    在 Swift 中将十六进制转换为十进制

  19. 19

    将字符串转换为十六进制,十进制和八进制

  20. 20

    十六进制到java中的十进制转换

  21. 21

    Ada中的十六进制十进制转换

  22. 22

    如何将负十六进制转换为十进制

  23. 23

    如何将负十进制转换为十六进制?

  24. 24

    使用awk将第一列从十六进制转换为十进制

  25. 25

    如何使用大脑将十进制转换为十六进制?

  26. 26

    从类似csv的txt文件将十六进制转换为十进制

  27. 27

    T-SQL将十六进制转换为十进制

  28. 28

    编写将十六进制转换为十进制的函数

  29. 29

    将4字节的十六进制转换为十进制值

热门标签

归档