Math 如何将基数为20的数字转换为十进制?

Math 如何将基数为20的数字转换为十进制?,math,type-conversion,hexavigesimal,Math,Type Conversion,Hexavigesimal,到处都找不到好的例子。如何将基数为20的数字转换为十进制?我在研究小生命数。我知道如何从微元到十进制的转换,那部分很容易。但我正在尝试从Vigesmal转换回十进制(整数),我不知道如何做到这一点。有谁有好的例子吗? 顺便说一下,我用C++。 例如,我试图找出一个算法,将最小的数字12转换为十进制的等价物22(整数)。或者类似于: 30(整数)=1A(向量平均) 提前谢谢,这真的只是基础数学。让我们假设您拥有的数字是一个字符串。然后(伪代码) 这里,numberValueOf函数将字符0转换为9

到处都找不到好的例子。如何将基数为20的数字转换为十进制?我在研究小生命数。我知道如何从微元到十进制的转换,那部分很容易。但我正在尝试从Vigesmal转换回十进制(整数),我不知道如何做到这一点。有谁有好的例子吗? 顺便说一下,我用C++。 例如,我试图找出一个算法,将最小的数字12转换为十进制的等价物22(整数)。或者类似于:

30(整数)=1A(向量平均)


提前谢谢,

这真的只是基础数学。让我们假设您拥有的数字是一个字符串。然后(伪代码)


这里,
numberValueOf
函数将字符
0
转换为
9
到它们的等效值,
A
转换为
J
通过
19
变成
10
在任何位置数字系统中,任何数字(甚至分数)都表示为和(di*basei),其中,di是第i位的数字(从右到左计数),d0是小数点左侧第一个位置的数字。为了便于评估,可使用以下方法“折叠”总额:

这一个的好处是,可以从最重要的数字开始,然后按照数字在内存或文件字符串中的排序方式向右进行操作

string number=“1A”;
整数小数=0;
for(string::const_迭代器it=number.begin();it!=number.end();it++)
十进制=十进制*基数+到整数(*it);
to_int()
应注意将字符转换为其十进制值,例如

int到_int(字符d){
如果('0',则这两种方式都可以(从小数位到小数位和从小数位到小数位)


基于

你确实意识到你的陈述“我知道如何从维格小数转换为十进制,这一部分很容易。但我正在尝试从维格小数转换回十进制”可能会让人困惑。基于其余的上下文,我想我知道你的意思-但你确实有点自相矛盾。也许想编辑这个问题?
number = "AF8";
base = 20;
result = 0;
for each c in number:
  temp = numberValueOf(char)
  result = base * result + temp

print "converting ", number, " results in ", result
(((d[n]*base + d[n-1])*base + d[n-2])*base + d[n-3])*base + ...
#!/usr/bin/env python

 def convert(vigisemal):
    i = int(vigisemal, 20)
    return i


 def tovigisemal(decimalstring):
     dec = int(decimalstring)
    x = (dec % 20)
    digits = "0123456789ABCDEFGHIJ"
    rest = dec / 20
    if (rest == 0):
        return digits[x]
    return tovigisemal(rest) + digits[x]


if __name__ == '__main__':
    print(convert("H1"))
    print(tovigisemal("341"))