基数为10次转换

时间:2012-10-03 17:47:48

标签: c++ algorithm base-conversion

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

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

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

2 个答案:

答案 0 :(得分:31)

我不明白问题究竟在哪里?做基础转换非常简单和直接:你可以像手工一​​样做。

  • 数字除以 base
  • 记下余下的
  • 使用分部的整数部分重复该过程
  • 当你达到零时停止
  • 以相反顺序排列的余数为您提供 base
  • 中的数字

示例:

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.改变它以使用不同的基础并不困难。