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 關注
- 165 瀏覽
添加回答
舉報