Warm tip: This article is reproduced from serverfault.com, please click

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

(其他 - PHP Convert a dec to a bit array with a predefined length)

发布于 2020-12-03 19:48:15

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

在代码的某一点上,我将具有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

谢谢!

Questioner
Roel
Viewed
0
Ro Achterberg 2020-12-04 04:04:29

这是你如何实现此目的的想法。

<?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