PHP无法读取二进制文件?

时间:2013-09-04 07:56:34

标签: php

我有一个非常简单的PHP代码应该读取二进制文件,但它不起作用:

<?php
$fid = fopen("sampleMdl.bin","rb");
echo "No. parts: " . fread($fid, 2) . "<br/>";

fclose($fid);
?>

sampleMdl.bin的前2个字节包含整数2.但是“No. parts:”后页面没有显示任何内容。 服务器中是否有任何设置可以避免PHP读取二进制文件?

2 个答案:

答案 0 :(得分:1)

您读取了二进制整数。

$bytes = fread($fld, 2);
$n = $bytes[0] | ($bytes[1] << 8); // The number

这是一种小端格式;它也可能是另一种方式,大端:

$n = $bytes[1] | ($bytes[0] << 8); // The number

在这种情况下,负数不会发生,所以这就足够了。

答案 1 :(得分:0)

通过结合使用unpack()和array_values()来找到解决方案:

<?php
$fid = fopen("sampleMdl.bin", "rb");
$NA = array_values(unpack("Sshort", fread(fid, 2)));
echo "No. parts: " . $NA[0] . "<br/>";

fclose($fid);
?>

sampleMdl.bin的前2个字节是02 00。