我有一个以10为底的数字。是否有将其转换为以62为底的数字?
例:
echo convert(12324324);
// returns Yg3 (fantasy example here)
PHP base_convert()
可以转换为基数36。
OLD :一个快速而肮脏的解决方案可以是使用如下函数:
function toChars($number) {
$res = base_convert($number, 10,26);
$res = strtr($res,'0123456789','qrstuvxwyz');
return $res;
}
基数转换将您的数字转换为数字为0-9a-p的基数,然后使用快速的char替换摆脱其余的数字。
如您所见,该功能易于逆转。
function toNum($number) {
$res = strtr($number,'qrstuvxwyz','0123456789');
$res = base_convert($number, 26,10);
return $res;
}
顺便说一句,您将使用此功能做什么?
编辑:
根据问题的更改和@jnpcl的答案,这是一组函数,它们执行基本转换而无需使用pow和log(它们花费一半的时间来完成测试)。
该函数仅适用于整数值。
function toBase($num, $b=62) {
$base='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$r = $num % $b ;
$res = $base[$r];
$q = floor($num/$b);
while ($q) {
$r = $q % $b;
$q =floor($q/$b);
$res = $base[$r].$res;
}
return $res;
}
function to10( $num, $b=62) {
$base='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$limit = strlen($num);
$res=strpos($base,$num[0]);
for($i=1;$i<$limit;$i++) {
$res = $b * $res + strpos($base,$num[$i]);
}
return $res;
}
考试:
for ($i = 0; $i<1000000; $i++) {
$x = toBase($i);
$y = to10($x);
if ($i-$y)
echo "\n$i -> $x -> $y";
}
问题内容: 我只想将以2为底的二进制数字字符串转换为,如下所示: 有没有办法在Python中做到这一点? 问题答案: 你可以使用内置函数,然后将输入数字的基数传递给该函数,即输入二进制数:
问题内容: 我编写了一个程序来求解,然后将其投影在图形上。问题是,每当出现错误时: ValueError:int()以10为底的无效文字。 有什么建议? 这是回溯: 每当我输入一个小于1但大于0的数字时,就会出现问题。在此示例中为0.3。 这是我的代码: 问题答案: 您的回溯告诉您采用整数,您试图给出一个十进制数,因此您需要使用: 这应该按预期工作: 计算机以各种不同的方式存储数字。Python有
问题内容: 我正在创建一个读取文件的程序,如果文件的第一行不为空白,它将读取接下来的四行。在这些行上执行计算,然后读取下一行。如果该行不为空,则继续。但是,我收到此错误: 它正在读取第一行,但无法将其转换为整数。 我该怎么做才能解决此问题? 代码: 问题答案: 仅作记录: 我在这里…
问题内容: 从有关对数的numpy文档中,我发现了以 e ,2和10为底取对数的函数: 但是,如何在numpy中使用以 n 为底的对数(例如42)? 问题答案: 要使用自定义底数获取对数,请使用: 要使用自定义底数获取对数,请使用: 如您所料,请注意默认情况下。 提醒一下,对数基数更改规则是:
问题内容: 我有一个价格列表,逗号带有小数点,点是千位分隔符。 一些例子: 12,30 116,10 1.563,14 这些来自第三方。我想将它们转换为浮点数并将它们添加在一起。 做这个的最好方式是什么? number_format 似乎不适用于此格式, str_replace 似乎有点过头了,因为我必须对每个数字进行多次操作。 有更好的办法吗?谢谢。 问题答案: 使用去除点并不过分。 几乎可以肯
问题内容: 我正在尝试做: 我得到以下错误: ValueError:以10为底的long()无效文字:‘12 .0’ 我的数据如下所示: 知道如何正确进行转换吗? 感谢帮助。 问题答案: 有一些值,无法将其转换为。 您可以使用并获得存在问题的价值: 如果需要检查值有问题的行,请与mask配合使用: 样品: