C语言 将数字从基数 n 转换为整数



所以我希望得到一些关于这个问题的指导。我有一个函数,它接受基数(基数),然后使用 getchar() 将获取要从给定基数转换为整数表示的数字。

给出的唯一参数是基数,然后 getchar() 通过命令行获取数字表示。

所以如果我通过

str2int 16
input a number: 3c

它应该输出 (16^1*3) + (16^0*12) = 48 + 12 = 60

我完全理解数学,以及转换基础的不同方法,但不知道如何编写一些东西。数学总是比代码容易得多,至少对我来说是这样。

另一种计算方法是:(702) 底数 15 = 15*7 + 0 = 105;15*105 + 2 = 1577

我不知道如何仅使用 getchar() 在 C 中表达这一点?是否可以不使用数学函数?

一次获取一个char,直到不需要一个数字或不再需要。

unsigned shparkison(unsigned base) {
  unsigned sum = 0;
  int ch;
  while ((ch = getchar()) != EOF) {
    // one could instead look up the toupper(value) in an array "0123...ABC...Z"; 
    // Following assumes ASCII
    if (isdigit(ch)) ch -= '0';
    else if (islower(ch)) ch -= 'A' - 10;
    else if (isupper(ch)) ch -= 'a' - 10;
    else {
      break; // Not a digit
    }
    if (ch >= base) {
      break; // Digit too high
    }
    unsigned sum_old = sum;
    sum *= base;
    sum += ch;
    if (sum < sum_old) {
      sum = sum_old;
      break; // Overflow
    }
  }
  ungetc(ch, stdin);
  return sum;
}

相关内容

  • 没有找到相关文章

最新更新