我有一长串数字,我想将它们分成长度为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>";
答案 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
$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>";
}