gpt4 book ai didi

在 C 中将十进制转换为十六进制并打印数组

转载 作者:行者123 更新时间:2023-11-30 16:19:17 24 4
gpt4 key购买 nike

我正在尝试在 C 中将十进制转换为十六进制,但代码似乎不起作用,我认为问题出在我打印数组的方式上。

我尝试过更改变量名称,但我不确定当前的问题。

  int decNum = 0;
int remainderDecHex = 0;
int decHexQuotient[LENGTH_OF_STRING];
char hexDecNum[LENGTH_OF_STRING];
int sum = 0;
int printNum = 0;
int index = 0;

while (userInputArray[index] != '\0' ) {
decHexQuotient[index] = userInputArray[index];

index ++;
while ( decHexQuotient[index] != 0) {
sum = sum + (decHexQuotient[index] %16);
// Convert integers into characters

if (sum < 10) {
sum = sum + 48;
} else {
sum = sum + 55;
}

decHexQuotient[index] = decHexQuotient[index] + (decHexQuotient[index]/16);
index ++;
}

printf("The hexadecimal Number is: ");

for (printNum = printNum -1; printNum > 0; printNum --) {
printf("%c",hexDecNum[printNum] );
}

我希望它打印十六进制数字,但它什么也不打印,userInputArray是我用来收集信息的,它是一个字符数组。顶部是所有变量,此代码的逻辑是我将用户输入作为字符串并将其转换为 int,然后检查它是否大于 10,以将 48 添加到 ASCII 代码中在 else 语句中同样将其更改为 a-f 表示十六进制。主要问题似乎是它没有按照我打印数组的方式打印出来。

这是因为我错误地打印了数组还是因为代码不起作用?

最佳答案

char *reverse(char *str)
{
size_t len = strlen(str);
char *end = str + len - 1;
char *savedstr = str;
char x;

if(!str || !len) return str;

while(end > str)
{
x = *end;
*end-- = *str;
*str++ = x;
}
return savedstr;
}

char tohex(long long x, char *buff)
{
char digits[] = "01234567890ABCDEF";
char *savedbuff = buff;
char sign = 0;
if (x < 0)
{
sign = '-';
x = -x;
}

do
{
*buff++ = digits[x & 0xf];
x /= 16;
}while(x);
*buff++ = sign;
if(sign) *buff = 0;
return reverse(savedbuff);
}

关于在 C 中将十进制转换为十六进制并打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55667481/

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