我正在尝试编写一个进行基本转换的 C++ 程序。
我想将十进制数转换为从 2 到 20 的所有其他整数基数。
是否有一种高效且易于实现的基本转换算法?
我正在尝试编写一个进行基本转换的 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 字符)。 这是一些非常有效的实现的示例。 改变它以使用不同的基地并不困难。