首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将二进制字符串转换为数组?

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

Stack Overflow用户
提问于 2015-12-22 16:07:50
回答 2查看 2.1K关注 0票数 2

例如,我有一个整数

$mask = 210;

它的二进制形式是

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

现在我想把它($mask或$binary)转换成一个带有索引的数组,这是真的:

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

做这件事最好的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2015-12-22 16:10:31

您可以手动执行此操作:

代码语言:javascript
运行
复制
$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

重要说明:位通常从零开始计算。所以,正确的答案应该是“1467”。将($i + 1)更改为$i以实现此结果。

票数 1
EN

Stack Overflow用户

发布于 2015-12-22 16:16:45

将$binary拆分成一个数组,按下0使自己的偏移量从1而不是0开始,反转它,过滤以删除False值,并获取键

代码语言:javascript
运行
复制
$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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34411127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档