gpt4 book ai didi

将基数 20 转换为 int

转载 作者:行者123 更新时间:2023-11-30 14:41:22 26 4
gpt4 key购买 nike

我正在尝试将基数 20 转换为 int。例如,如果我有 "1A",则需要将其转换为 30,依此类推。我已经开发了代码,但它在运行时出现问题。使用C编程语言编写的代码如下:

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

int main()
{
printf("Hello world!\n");
char converted[20] = "1A";
itov(converted);

return 0;
}

void itov(char vigesimalStr[])
{
int length = 0;
for (int i = 0; vigesimalStr[i] != '\0'; i++)
{
length++;
}

int base = 20;
int result = 0;
int power = 1;
int num = 0;
for (int j = length; j >= 0; j--)
{
if (val(vigesimalStr[j]) >= base)
{
printf("Invalid Number");
return -1;
}

num += val(vigesimalStr[j]) * power;
power = power * base;

}

}

int val(char c)
{
if (c >= '0' && c <= '9')
return (int)c - '0';
else
return (int)c - 'A' + 10;
}

最佳答案

我首先要说明的是,已经有一个库函数可以将包含任何基数的数字的字符串从(我相信)2 转换为 36:

printf("%ld\n", strtol("1A", NULL, 20));
// Output: 30

但是,如果作为练习或家庭作业的一部分,禁止使用此库函数和类似的库函数,我不会为您做作业,但我会为您提供用于阅读的高级算法的描述任意基数的整数 N:

  1. 累加器变量初始化为零。
  2. 0 处初始化计数变量 i
  3. 累加器乘以N。
  4. 获取当前在 str[i] 中的以 N 为基数的数字值,并将其添加到 accumulator(您的 val 函数) )。
  5. 增加i
  6. 如果str[i]'\0',则返回accumulator并退出。否则,请转至步骤 3。

关于将基数 20 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55008863/

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