重用str_split()的值

时间:2016-01-05 13:20:09

标签: php

我有一长串数字,我想将它们分成长度为8的块,然后从这个ascii数字中取出它们的字符。

当我在bindec()之后使用str_split($string,8)时,它给了我错误的价值。 我无法弄清楚问题出在哪里,因为str_split()正确地划分了字符串。

$key = '101101011';
numbersToletters($key);

function numbersToletters($string) {
    $pool = str_split($string, 8);
    for($i = 0; $i < count($pool); $i++) {
        $bin = $pool[$i];
        $n = bindec($bin);
        echo chr($n) . "<br>";
    }
}

我从bindec('101101011')收到的输出是81,而它是363,应该返回k

这适用于例如

$number = bindec($key);
echo $number;
echo "<br>".chr($number) ."<br>";

2 个答案:

答案 0 :(得分:1)

删除对chr功能的调用:

$key = '0011010000101101101101011010100000011101110110111001000000000100';
numbersToletters($key);

function numbersToletters($string) {
    $pool = str_split($string, 8);
    for($i = 0; $i < count($pool); $i++) {
        $bin = $pool[$i];
        $n = bindec($bin);
        echo $n . "<br>";
    }
}

答案 1 :(得分:1)

我尝试你的代码并没有错。 Var_dump显示真实值,我用我的头脑翻译确定。

array (size=8)
0 => string '00110100' (length=8)
1 => string '00101101' (length=8)
2 => string '10110101' (length=8)
3 => string '10101000' (length=8)
4 => string '00011101' (length=8)
5 => string '11011011' (length=8)
6 => string '10010000' (length=8)
7 => string '00000100' (length=8)

52
45
181
168
29
219
144
4
  

检查http://www.asciitable.com/

    $key = '0011010000101101101101011010100000011101110110111001000000000100';
    $pool = str_split($key,8);

    var_dump($pool);

    for($i = 0 ;$i < count($pool) ; $i++)
    {
        $n= bindec($pool[$i]);
        var_dump($n);
        echo chr($n) . "<br>";
    }