如何使一个小数在C十六进制转换器(How to make a decimal to hexadeci

2019-10-29 16:44发布

所以我用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

但我怎么可以使程序在循环过程中创建的变量? 我一定要使用完整的不同方法? 我看了看其他十进制为十六进制转换器,我不完全得到他们如何工作。

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

感谢您的答复。 所以数组是回答我的问题呢? 我不完全正确的,现在明白他们,但感谢你在正确的方向点。

Answer 1:

做一个阵列和写在它的遗迹:

int array[50];
int counter=0;

[...]

while(number!=0)
{
   [...]

   array[counter]=number%16;
   number/=16;
   ++counter;
}

线array[counter]=number%16; 意味着在阵列中的第一个元素将是数%16 - 第二个是(数/ 16)%16等

您需要counter知道有数组(多少遗体)在多少元素,让你可以在以后他们向后写。

(请考虑到这里,你有一个限度- int array[50];因为,如果你的号码是非常大的,你有超过50具遗体会发生什么解决办法是动态地写这篇文章,但我不觉得吗?你应该担心的是在这一点上。)



Answer 2:

我会简单地使用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);


Answer 3:

如果您希望能够得到大小不限数量,你需要使用动态数组。 首先你得到的输入长度由循环,然后根据需要分配阵列。 你需要增加在循环的索引,并将当前值数组[索引]。



Answer 4:

刚刚尝试这一点:

    char hex = [], finalHex = [];
while(num != 0) {
num = num/16;
rem = num%16;
switch(rem) {
case 0 : 
hex = '0';
break;
case 1 : 
hex = '1';
break;
case 2 : 
hex = '2';
break;
case 3 : 
hex = '3';
break;
case 4 : 
hex = '4';
break;
case 5 : 
hex = '5';
break;
case 6 : 
hex = '6';
break;
case 7 : 
hex = '7';
break;
case 8 : 
hex = '8';
break;
case 9 : 
hex = '9';
break;
case 10 : 
hex = 'A';
break;
case 11 : 
hex = 'B';
break;
case 12 : 
hex = 'C';
break;
case 13 : 
hex = 'D';
break;
case 14 : 
hex = 'E';
break;
case 15 : 
hex = 'F';
break;
}
strcat(hex, finalHex);
finalHex = hex;
}
 printf("%s", finalHex);


Answer 5:

// decimal to hex converter
char* dec2hex(int num){
  int rem = 0,i=0;
  char hex[3];
  while(num > 0 && i >=0){
    rem = num%16;
    hex[i] = rem<10 ? (char)rem+48 : (char)rem+55;
    num/=16;
    i++;
  }
  hex[i]='\0';
  return strrev(hex);
}


文章来源: How to make a decimal to hexadecimal converter in C
标签: c hex decimal