`Type L: not enough input` 何时解压目标数据

`Type L: not enough input` when to unpack the target data

在 Whosebug 的朋友的帮助下,我完成了从目标文件中以二进制形式解析数据的工作。

<?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.how 修复它?

将循环更改为:

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

feof($handle) 直到 您尝试读取文件末尾后才会变为真。

因此您正在执行额外的 fread(),即 returns false,然后尝试解压缩一个空字节字符串。