Algorithm 将未知基数中的数字转换为等效基数10的算法

Algorithm 将未知基数中的数字转换为等效基数10的算法,algorithm,base-conversion,Algorithm,Base Conversion,可能重复: 给定一个整数,编写一个程序,将给定的数字转换为以10为基数的数字。提示-给定的数字可以在任何基数中,但基数未知。这无法完成;在不知道来源的情况下,这个数字是不明确的。碱基n中的10转化为碱基10中的n;有无限的可能性一旦有了基础,就很容易做到 通过查找最高数字,可以得到基数的下限。与数字175234一样,基数必须至少为8。然而,你永远找不到上限:数字可以是从8到无穷大的任何基数 相反,如果第一个基数是8、9或10,您可以打印出该数字。然后用户可以决定自己的想法。我假设“未知”是指算

可能重复:


给定一个整数,编写一个程序,将给定的数字转换为以10为基数的数字。提示-给定的数字可以在任何基数中,但基数未知。

这无法完成;在不知道来源的情况下,这个数字是不明确的。碱基n中的10转化为碱基10中的n;有无限的可能性

一旦有了基础,就很容易做到

通过查找最高数字,可以得到基数的下限。与数字175234一样,基数必须至少为8。然而,你永远找不到上限:数字可以是从8到无穷大的任何基数


相反,如果第一个基数是8、9或10,您可以打印出该数字。然后用户可以决定自己的想法。

我假设“未知”是指算法需要能够处理任何基?否则这简直是不可能的

所以你基本上要求函数convertnumber,base=base10Number

count = 0
total = 0
for each digit in number, from least significant to most significant
  total = total + digit * base^count
  count = count + 1
e、 g。 355,8

第一个循环:总计=0+5*8^0=5 第二个循环:总计=5+5*8^1=45 第三个循环:总计=45+3*8^2=237
结果=237

问题陈述指出给定数字的基数未知。因此,要继续下去,必须假定数字的基数。实际上,可以安全地假设数字中具有最大值的数字表示可以在未知基数中计算的最大值。该数字,例如,如果表示为254,则可以假设数字系统由数字0、1、2、3、4、5或基数6组成

if(!(((ascii >= '0') && (ascii <= '9')) || ((ascii >= 'A') && (ascii <= 'Z')))) {
   printf("Illegal number, can have only digits (0-9) and letters (A-Z)");

希望这有帮助

>P>这是一个错误的问题,因为考虑数字7可能是八进制,十六进制,不可能决定。我们必须知道输入数字的基数。 我们可以这样写方法

public int convertToSaint inNumber、int inBase、int outBase{

//废话

返回转换号码;
}

这里是一个小java示例,包含三种方法

公共类TestNumberBase{ 公共静态无效字符串[]args{ System.out.PrintLnConverNumber为100000,2,16; } 公共静态int CONVERNTOBASEINT inNum、int inBase、int outBase{ 返回ConvertDecimalTootherbaseConvertDecimalequivalentInum、inBase、outBase; } 公共静态整数转换器十进制等效整数,数据库中的整数{ int-outNumber=0; int_base=inBase; 当数字>0时{ 整数位数=数字%10; 数字=数字/10; outNumber=outNumber+inBase/_base*位; inBase=inBase*\u基; } 返回数量; } 公共静态int-convertDecimalToOtherBaseint-number,int-outBase{ int-outNumber=0; int _base=10,base=10; 当数字>0时{ 整数位数=数字%outBase; 编号=编号/外底; outNumber=outNumber+基数/_基数*位数; base=base*_base; } 返回数量; } }
您可以使用简单的算法将n从基数c更改为基数b,其中:

n是组成数字的数字列表。 c是初始基数。 b是所需的基数。 每个数字可以包含多个数字。 下面是Wallar算法在Python中的实现

从数学导入* def基本扩展n、c、b: j=0 base10=总和[powc,lenn-k-1*n[k]表示范围0内的k,lenn] 而地板底座10/powb,j!=0:j=j+1 返回[floorbase10/powb,j-p%b,范围1中的p,j+1]
这应该被标记为家庭作业吗?这怎么可能呢?4是什么基数?它可能是5垒,12垒,123垒-你现在有办法知道了!也许它应该是这样的:将一个以10为基数的数字转换成其他任何基数的数字?@codeka-4在所有这些基数中仍然是4。更有趣的问题是,10的基数是多少P@detly:哈,是的,你是对的,但希望你能理解我的意思