我有这个函数,它将数字从十进制转换为二进制.
<?php
function DecimalTOBinary($num)
{
$a = "";
$b = "";
$x = 0;
while ($num !=0)
{
$b .= $num % 2;
$num = $num /2;
}
/*
for($i = strlen($b) -1;$i >=0;$i--)
{
a .= substr($b,$i,$i +1);
}*/
return $b;
}
?>
Run Code Online (Sandbox Code Playgroud)
我的问题是它将返回字符串:
010010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
我只想回来:
0100101
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
$num = $num / 2;可能会进行分数除法(隐式转换为浮点数),导致$num接近0但需要很长时间才能达到目标.使其$num = floor($num / 2);将其向下舍入为整数.
请注意,还有decbin()用于实现此目的的内置方法.
示例性(但多余的):
function DecimalTOBinary($num)
{
return decbin($num);
}
Run Code Online (Sandbox Code Playgroud)