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