以 10 为基数到以 n 为基数的转换

Base 10 to base n conversions

本文关键字:转换      更新时间:2023-10-16

我正在尝试编写一个进行基本转换的C++程序。

我想将十进制数转换为从 2 到 20 的所有其他整数基数。

是否有一种高效且易于实现的基础转换算法?

我不

明白问题到底在哪里?进行基本转换非常简单且简单:您可以像手动一样进行。

  • 将数字除以基数
  • 记下其余部分
  • 对除法的整数部分重复该过程
  • 达到零时停止
  • 其余部分按相反顺序为您提供

例:

1025(十进制)到以 15 为基数:

1025 / 15 = 68 , remainder 5
68   / 15 =  4 , remainder 8
4    / 15 =  0 , remainder 4

以 15 为基数的数字是 485

您可能有两个问题:

  • 从原始基到计算机的本机整数表示解析(strtol在这方面非常擅长)。

  • 格式化到新基库中。(itoa在这方面很擅长)。

如果你想自己编写,你可能会喜欢div函数。 你输入数字和基数,它会从最右边的数字中分离出来。 重复上述步骤以获取所有数字。

如果你想提高效率,你可以除以基数的平方,一次得到两位数(使用查找表获取两位数的 ASCII 字符)。 下面是一些非常有效的实现示例。 将其更改为使用不同的基础并不困难。