我想在perl中做一些类似下面的事情:
@digits = ("1", "2", ..., "a", ... "z", ... ); ## a list of characters
$num = 1033;
convert_to_base($num, @digits);
现在,$num
将被转换为一个字符串,其中使用的数字来自digits(因此基数为$#digits + 1
)。
它可以通过在$num
上迭代来完成,取$num对$#digits
的模,然后除以0,但是我想知道在perl中是否有内置函数可以完成这个任务(或者在perl中有一个快速函数可以完成这个任务)。
2条答案
按热度按时间hrirmatl1#
使用Math::Base::Convert,如choroba对问题的注解中所建议的:
注意,如果需要将其解释为字符串,则可能需要执行以下操作:
printf "%s", "" . cnv($num, 10, b85);
5hcedyr02#
正如@Adam Katz在他的回答中提到的,方法是使用Math::Base::Convert。然而,您的问题是关于使用 * 任意 * 基数。CPAN pod并不十分清楚如何做到这一点,但实际上很简单: