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
我对如何做一件简单的事情感到困惑,也许有人可以帮助我。
在我的代码中,我将一个包含 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