如何将二进制字符串转换为数组?

时间:2015-12-22 08:07:50

标签: php

例如我有一个整数

$binary = decbin($mask); // "11010010"

二进制是

$expected = [2, 5, 7, 8];

现在我想将此($ mask或$ binary)转换为索引为true的数组:

%appdata%\Microsoft\VisualStudio\14.0

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以手动执行此操作:

$expected = array();

$mask = 210;
$binary = strrev(decbin($mask)); // strrev reverts the string

for ($i = 0; $i < strlen($binary); $i++)
{
    if ($binary[$i] === '1') $expected[] = ($i + 1);
}

工作IDEOne demo

重要提示:位通常从零开始计算。所以,正确答案是“1 4 6 7”。将($i + 1)更改为$i以获得此结果。

答案 1 :(得分:0)

将$ binary拆分为一个数组,按0给自己的偏移量从1而不是从0开始,反转它,过滤以删除falsey值,然后获取键

$mask = 210;
$binary = decbin($mask); // "11010010"

$tmp = str_split($binary, 1);
$tmp[] = 0;
$expected = array_keys(
    array_filter(
        array_reverse($tmp)
    )
);

var_dump($expected);

Demo