Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组(包含真值和假值)转换为二进制字符串并转换为ASCII字符?_Php_Arrays_String_Binary_Ascii - Fatal编程技术网

Php 如何将数组(包含真值和假值)转换为二进制字符串并转换为ASCII字符?

Php 如何将数组(包含真值和假值)转换为二进制字符串并转换为ASCII字符?,php,arrays,string,binary,ascii,Php,Arrays,String,Binary,Ascii,我有一个按数组排列的权限列表,例如: $permissions = array(true, true, false, false, true, ...); 我的目的是将数组转换为1和0的链: $pseudo_binary = array_to_binary($permissions); //011001000110111101100111 然后将该字符串视为二进制数,并作为ASCII字存储在数据库中: $ascii = binary_to_word($pseudo_binary); //do

我有一个按数组排列的权限列表,例如:

$permissions = array(true, true, false, false, true, ...);
我的目的是将数组转换为1和0的链:

$pseudo_binary = array_to_binary($permissions); //011001000110111101100111

然后将该字符串视为二进制数,并作为ASCII字存储在数据库中:

$ascii = binary_to_word($pseudo_binary); //dog
array-to-binary()方法并不重要,我使用一个简单的foreach。但我请求帮助进行这些转换:

(字符串)“011001010111101100111”-->“狗”

“狗”---->(字符串)“011001011011011011011011011”


这应该适合您:

首先,我使用并替换每个元素
TRUE
->
1
FALSE
->
0
。然后我把它编成一条线

在此之后,我简单地将字符串转换为8位(1字节)的数组。然后,我使用
数组映射()循环遍历每个数组元素,将二进制文件转换为dec with,然后使用获取其字符。(还要注意,我过去常常确保每个元素有8位,否则我会用0填充它)

代码:


你试过什么吗?我发现的是如何处理一个二进制数,而不是一个表示二进制数的字符串。问题,为什么我必须将字符串拆分为一个8个字符的数组?我不能将字符串作为一个整体运行吗?@Srini
chr()
仅用于1个字符,因此每个ASCII字符对应1个字节。啊,bindec()。首先,我有点不好意思知道有一个功能。但有时很难找到合适的文档。非常感谢您的回答,它非常完美。
<?php

    //Equivalent to: 011001000110111101100111
    $permissions = [FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE];

    $binaryPermissionsString = implode("", array_map(function($v){
        return $v == TRUE ? 1 : 0;
    }, $permissions));


    $binaryCharacterArray = str_split($binaryPermissionsString, 8);
    $text = implode("", array_map(function($v){
        return chr(bindec(sprintf("%08d", $v)));
    }, $binaryCharacterArray));

    echo $text;

?>
dog