gpt4 book ai didi

linux - C、不用函数将十六进制数转十进制数

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:42 24 4
gpt4 key购买 nike

我正在尝试将十六进制数转换为十进制数。到目前为止我想出的是:

#include <unistd.h>
#include <stdio.h>

long convert(char *input, short int *status){
int length = 0;
while(input[length])
{
length++;
}
if(length = 0)
{
*status = 0;
return 0;
}
else
{
int index;
int converter;
int result = 0;
int lastNumber = length-1;
int currentNumber;
for(index = 0; index < length; index++){
if(index == 0)
{
converter = 1;
}

else if(index == 1)
{
converter = 16;
}

else{
converter *= 16;
}
if(input[lastNumber] < 45 || input[lastNumber] > 57)
{
*status = 0;
return 0;
}
else if(input[lastNumber] > 45 && input[lastNumber] < 48)
{
*status = 0;
return 0;
}

else{
if(input[lastNumber] == 45)
{
*status = -1;
return result *= -1;
}
currentNumber = input[lastNumber] - 48;
result += currentNumber * converter;
lastNumber--;
}
}
*status = -1;
return result;
}
}

int main(int argc, char **argv)
{
char *input=0;
short int status=0;
long rezult=0;
if(argc!=2)
{
status=0;
}
else
{
input=argv[1];
rezult=convert(input,&status);
}

printf("result: %ld\n", rezult);
printf("status: %d\n", status);


return 0;
}

不知何故,我总是得到结果 0。我也不允许使用任何其他外部函数(printf 除外)。我上面的代码可能有什么问题?

最佳答案

这个:

if(dolzina = 0)
{
*status = 0;
return 0;
}

不仅仅是测试 dolzina,它首先它设置为 0。这会导致 else 子句运行,但是 dolzina 等于 0,这不是预期的结果。

当然,您应该只使用 == 进行比较。

关于linux - C、不用函数将十六进制数转十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15677286/

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