gpt4 book ai didi

c - 十进制到十六进制单位转换

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:49 24 4
gpt4 key购买 nike

我有下一个将十进制单位转换为十六进制的代码。例如,如果我引入数字 4095,它会返回 FFF 十六进制,但问题是我希望数字以 2 字节格式打印,例如这个(左边有零):

4095 -> 0FFF,33 -> 0021

我知道有更简单的方法可以做到这一点:

int number = 4095
printf("%04x",number);

但我想自己做转换和 2 字节格式,但我不知道如何在左边的过程中做零。

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

char Hexadecimal(int rest);

int main()
{
char num_hex,*x,c[2],;
int number = 4095,d,rest;
x = calloc(12,sizeof(char));
for(d = number;d > 0;d/=16)
{
rest = d % 16;
num_hex = Hexadecimal(rest);
sprintf(c,"%c",num_hex);
strcat(x,c);
}
strrev(x);
printf("[%s]\n",x);
return 0;
}

char Hexadecimal(int rest)
{
char letter;
switch(rest)
{
case 10:
letter = 'A';
break;
case 11:
letter = 'B';
break;
case 12:
letter = 'C';
break;
case 13:
letter = 'D';
break;
case 14:
letter = 'E';
break;
case 15:
letter = 'F';
break;
default:
letter = '0' + rest;
}
return letter;
}

最佳答案

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

char const Hexadecimal[] = "0123456789ABCDEF";

int main()
{
char num_hex,*x,c[2],;
int number = 4095,d,rest;
x = calloc(12,sizeof(char));
for(d = number;d > 0;d/=16)
{
rest = d % 16;
num_hex = Hexadecimal[rest];
sprintf(c,"%c",num_hex);
strcat(x,c);
}
strrev(x);
printf("[%s]\n",x);
return 0;
}

关于c - 十进制到十六进制单位转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com