2015-04-29 7 views
0

Я получаю задание для анализа данных из целевого файла в двоичной форме с помощью друзей stackoverflow.`Тип L: недостаточно ввода`, когда распаковывать данные цели

<?php 
    $handle = fopen('data', 'rb'); 
    fread($handle,64); 
    while (!feof($handle)) { 
     $bytes= fread($handle,32); 
     print_r(unpack("La/fb/fc/fd/fe/ff/fg/fh",$bytes)); 
     echo "<br/>"; 
     } 
    echo "finish"; 
    fclose($handle); 
?> 

Я получил результат, последняя ошибка остается здесь, что не может решить.
1.why unpack(): Тип L: недостаточно ввода, необходимо 4, есть 0?
2.может ли это исправить?

enter image description here

ответ

0

Изменить петлю на:

while ($bytes = fread($handle, 32)) { 
    print_r(unpack("La/fb/fc/fd/fe/ff/fg/fh",$bytes)); 
    echo "<br/>"; 
} 

feof($handle) не станет истинным, пока после вы пытались прочитать в конце файла.

Итак, вы выполняете дополнительный fread(), который возвращает false, а затем пытается распаковать пустую строку байта.