3 回答
TA贡献1934条经验 获得超2个赞
使用decbin()但你需要0
向左填充,否则00000001
会1
再次变成。
一种方法是使用array_reduce(),尽管您可以通过多种方式循环数组。
<?php
$array = [178, 89, 1];
echo array_reduce($array, function ($acc, $byte) {
return $acc.strrev(str_pad(decbin($byte), 8, 0, STR_PAD_LEFT));
})
结果:010011011001101010000000
TA贡献1757条经验 获得超8个赞
也许你需要这样的东西:
<?php
$array = [178, 89, 1];
$output = 0;
foreach ($array as $v) {
for ($i = 0; $i < 8; $i++) {
$output = ($output << 1) | ($v & 1);
$v = $v >> 1;
}
}
echo $output . " " . str_pad(decbin($output), 24, 0, STR_PAD_LEFT);
现在一步一步:
对于输入数组中的每个元素,我们得到第 0 位(不太重要)-
$v & 1
输出变量左移以为该位提供空间
$output << 1
|
位被设置到输出变量部分的最右边的位置我们将变量向右移动,因此第 1 位变为 0
重复其余部分
TA贡献1780条经验 获得超5个赞
<?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);
}
//empty output string
$output = '';
//define array
$array = [178, 89, 1];
//loop array values
foreach($array as $value){
//convert to binary and concatenate
$output .= dec2bin_i($value);
}
//show output
echo $output;
?>
- 3 回答
- 0 关注
- 120 浏览
添加回答
举报