Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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中的字符串到字节/二进制数组_Php_Arrays - Fatal编程技术网

PHP中的字符串到字节/二进制数组

PHP中的字符串到字节/二进制数组,php,arrays,Php,Arrays,在PHP中如何将字符串转换为二进制数组?在PHP中没有二进制数组。所有需要字节流的函数都在字符串上运行。您到底想做什么?如果您试图访问字符串的特定部分,可以将其视为一个数组 $foo = 'bar'; echo $foo[0]; 输出:b我认为您要求的是与Perl pack/unpack函数等效的函数。如果是这种情况,我建议您查看PHP打包/解包函数: 假设您希望将$stringA=“Hello”转换为二进制 首先使用ord()函数获取第一个字符。这将为您提供十进制字符的ASCII值。在

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

在PHP中没有二进制数组。所有需要字节流的函数都在字符串上运行。您到底想做什么?

如果您试图访问字符串的特定部分,可以将其视为一个数组

$foo = 'bar';
echo $foo[0];

输出:b

我认为您要求的是与Perl pack/unpack函数等效的函数。如果是这种情况,我建议您查看PHP打包/解包函数:


假设您希望将$stringA=“Hello”转换为二进制

首先使用ord()函数获取第一个字符。这将为您提供十进制字符的ASCII值。在这种情况下是72

现在使用dec2bin()函数将其转换为二进制。 然后执行下一个函数。 您可以找到这些函数是如何工作的

或者使用以下代码:

<?php
    // Call the function like this: asc2bin("text to convert");
    function asc2bin($string)
    {
        $result = '';
        $len = strlen($string);
        for ($i = 0; $i < $len; $i++)
        {
            $result .= sprintf("%08b", ord($string{$i}));
        }
        return $result;
    }

    // If you want to test it remove the comments
    //$test=asc2bin("Hello world");
    //echo "Hello world ascii2bin conversion =".$test."<br/>";
    //call the function like this: bin2ascii($variableWhoHoldsTheBinary)
    function bin2ascii($bin)
    {
        $result = '';
        $len = strlen($bin);
        for ($i = 0; $i < $len; $i += 8)
        {
            $result .= chr(bindec(substr($bin, $i, 8)));
        }
        return $result;
    }
    // If you want to test it remove the comments
    //$backAgain=bin2ascii($test);
    //echo "Back again with bin2ascii() =".$backAgain;
?>


对于这种字符串访问,我认为花括号表示法更可取(否则您可能会把维护代码的其他人弄糊涂)。例如:$foo{0}除非我弄错了,否则在PHP6AH中不推荐使用花括号表示法,这里是:“字符串访问和字符修改”标题下的“注释”@EvanK:对于任何类型的访问,我相信方括号表示法都是可取的(否则您可能会把维护代码的其他人弄糊涂)。例如,避免:$foo{0}这正是我想要的。