Php 重用str_split()的值
我有一个很长的数字字符串,我想把它们分成长度为8的块,然后从这个ascii数字中提取它们的字符 当我在str_split$string之后使用bindec时,它给了我错误的值。 我不知道问题出在哪里,因为str_split正确地分割了字符串Php 重用str_split()的值,php,Php,我有一个很长的数字字符串,我想把它们分成长度为8的块,然后从这个ascii数字中提取它们的字符 当我在str_split$string之后使用bindec时,它给了我错误的值。 我不知道问题出在哪里,因为str_split正确地分割了字符串 $key = '101101011'; numbersToletters($key); function numbersToletters($string) { $pool = str_split($string, 8); for($i =
$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>";
删除对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>";
}
}
我尝试了你的代码,没有任何错误。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
查看
您期望的输出是什么?您得到的错误值是什么?可能只是chr$n上缺少utf8_编码?只是猜测而不知道预期的valueschr函数只返回一个字符。也许这就是问题所在?bindec'101011';是363。但在代码中,$key中有9个字符,所以取前8个bindec'10110101';那是181。你从哪里弄来的81?这里是问题char do no problem这个返回为following 52是对的45是对的81是错的假设是二进制101101011是363所以如下数字101010001给出=>68错误0001101给出=>29正确110112给出=>19错误为什么你突然使用9个位置363的二进制数什么地方都没有?
$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>";
}