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