PHP 将 dec 转换为具有预定义长度的位数组

PHP Convert a dec to a bit array with a predefined length

我对如何做一件简单的事情感到困惑,也许有人可以帮助我。

在我的代码中,我将一个包含 10 个警报(0 或 1)的位数组转换为十进制数并保存。 在另一点我加载小数并想将它转换回位数组。

这有效,但是即使十进制长度不是 10 位,位数组的长度也应始终为 10。

查看我的代码:

// Convert array to dec:
$alarms = array(0,0,1,0,0,0,1,0,0,0);
$str = implode("", $alarms);
$dec = bindec($str);

// Convert back to bit array:
$bin = decbin($dec);

echo $bin;

这段代码的结果是:

10001000

但应该是:

0010001000

谢谢!

这里有一个关于如何实现它的想法。

<?php

// Input array of bits
$inBits = [0,0,1,0,0,0,1,0,0,0];
// Convert to decimal value
$value = bindec(implode('', $inBits));
// Convert back to string of 0/1, adding padding as needed.
$outBitStr = str_pad(decbin($value), count($inBits), '0', STR_PAD_LEFT);

var_dump(implode('', $inBits) === $outBitStr); // TRUE