2016-01-05 3 views
-1

У меня длинная строка числа, я хочу разделить их на куски длиной 8, а затем вывести их персонажей из этого числа ascii.повторно использовать значение str_split()

Когда я использую 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 и должен вернуться к

это работает плавник, например

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

Что вы ожидаемый выход? –

+1

И что вы получили за неправильное значение? – segarci

+1

Возможно, это только недостающий utf8_encode() на chr ($ n)? (просто угадать, не зная ожидаемых значений). – theColaKid

ответ

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>"; 
    } 
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>"; 
    } 
} 
+0

здесь проблема голец не делают никакой проблемы, это возвращение следующим 52, который является правильным 45 whiich прав 1, что неправильно это, предполагают, чтобы быть двоичным 101101011, который 363 так как следующие числа 101010001 дает => 68 неверно 00011101 дает => 29 right 110110112 дает => 19 неверно –

+2

Почему вы вдруг используете двоичные числа с 9 позициями (363) из ниоткуда? – SBI