所以我是 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/