我试图让十进制到二进制转换器不使用decbin()函数。 我想这样的不便(这是确定,但它需要被逆转):
$dec=101;
while ($dec>=1){
$bin = $dec % 2;
$dec = round($dec/2, 0, PHP_ROUND_HALF_DOWN);
print "$bin";
}// output:1010011
我怎么能扭转输出到1100101? 感谢在前进。 :)
我试图让十进制到二进制转换器不使用decbin()函数。 我想这样的不便(这是确定,但它需要被逆转):
$dec=101;
while ($dec>=1){
$bin = $dec % 2;
$dec = round($dec/2, 0, PHP_ROUND_HALF_DOWN);
print "$bin";
}// output:1010011
我怎么能扭转输出到1100101? 感谢在前进。 :)
为十进制整数转换为二进制,反复除以2 - 使用整数除法 - ,直到它变为0。在每个步骤中的余数,这是0和1,表示二进制数,当以相反的顺序排列在一起,其中它们产生。
<?php
function dec2bin_i($decimal_i)
{
bcscale(0);
$binary_i = '';
do
{
$binary_i = bcmod($decimal_i,'2') . $binary_i;
$decimal_i = bcdiv($decimal_i,'2');
} while (bccomp($decimal_i,'0'));
return($binary_i);
}
?>
测试用例
<?php
echo dec2bin_i('36893488147419103232'); //2^65
?>
输出:A,接着为65个零1:
100000000000000000000000000000000000000000000000000000000000000000
还有就是要扭转一个字符串的函数strrev
$dec=101;
$binStr = '';
while ($dec>=1){
$bin = $dec % 2;
$dec = round($dec/2, 0, PHP_ROUND_HALF_DOWN);
$binStr .= $bin;
}
$binStr = strrev($binStr);
echo $binStr;
尝试这个:
$dec = 101;
$bos = NULL;
while ($dec>=1){ $bin = $dec % 2; $dec = round($dec/2, 0,
PHP_ROUND_HALF_DOWN);
$bos .= $bin;
}
echo strrev($bos);