我正在尝试编写一个执行基本转换的C ++程序。
我想将十进制数转换为2到20之间的所有其他整数基数。
是否有一种高效且易于实现的基本转换算法?
答案 0 :(得分:31)
我不明白问题究竟在哪里?做基础转换非常简单和直接:你可以像手工一样做。
示例:
1025(十进制)到15:
1025 / 15 = 68 , remainder 5
68 / 15 = 4 , remainder 8
4 / 15 = 0 , remainder 4
基数15中的数字是485
答案 1 :(得分:3)
您可能遇到两个问题:
从原始基础解析到计算机的本机整数表示(strtol
非常擅长)。
格式化为新基础。 (itoa
非常擅长)。
如果你想自己写,你可能会喜欢div
function。你输入数字和基数,它会分开最右边的数字。重复以获取所有数字。
如果你想提高效率,你可以除以基数平方,并一次得到两位数(使用查找表来获取两个数字的ASCII字符)。 Here's an example of some very efficient implementations.改变它以使用不同的基础并不困难。