c - 如何在C中制作十进制到十六进制转换器

标签 c hex decimal

所以我是 C 的绝对初学者,我必须做一个十进制到十六进制的转换器。

所以我想我需要做一个循环直到结果为 0。

但是我怎样才能让它记住所有的余数呢?该数字将使用 scanf 输入,因此我无法为其定制代码。

现在我想做这样的事情

while(number(n)!=0)
{
    number0 / 16 = number1
    number0 % 16 = remainder0
    number1 / 16 = number2
    number1 % 16 = remainder1
    .....
    number(n-1) / 16 = 0
    number(n-1) % 16 = lastremainder
}

hex = lastremainder, ..., remainder2, remainder1, remainder0

但是我怎样才能让程序在循环中创建变量呢?我必须使用完全不同的方法吗?我查看了其他十进制到十六进制转换器,但不太了解它们的工作原理。

就像我说的,我是一个绝对的初学者,如果这个问题很愚蠢,我很抱歉。

感谢您的回复。那么数组是我的问题的答案吗?我现在还不能完全理解它们,但感谢您指明了正确的方向。

最佳答案

老实说,我会简单地使用 sprintf:

char hex[10];
sprintf(&hex, "%x", INT_MAX);//INT_MAX macro requires limits.h, though...
printf("%s\n", hex);//prints 7fffffff

工作完成...
完整而言,您的代码可能类似于:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char hex[10];
    int input;
    scanf("%d", &input);
    sprintf(&hex, "%x", input);
    printf("The number %d, turned to hexadecimal is: %s\n", input, hex);
    return 0;
}

甚至:

    int input;
    scanf("%d", &input);
    printf("The number %d, turned to hexadecimal is: %x\n", input, input);

关于c - 如何在C中制作十进制到十六进制转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047598/

相关文章:

c - XPM 图像内存分配

c - 如何在 linux/Mac OSX 中获取网络适配器统计信息?

winapi - PE 101 windows api调用地址的解释

c++ - 如何解析网络流量的十六进制代码

c++ - 字符串转换中的十六进制值

c - 如何在C中将二进制数转换为两位十进制数

c# - Entity Framework 小数舍入与投影不一致

c - 错误 : ‘asm’ undeclared (first use in this function)

arrays - 使用标准库将 char 转换为 wchar_t?

c++ - 以二进制模式扫描文件并将十六进制字符解释为 C++ 中的实际数字