0

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

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

fclose($fid);
?>

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

4

2 回答 2

1

你读取一个二进制整数。

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

这是一种小端格式;也可能是相反的方式,大端:

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

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

于 2013-09-04T08:00:41.197 回答
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。

于 2013-09-06T11:15:52.793 回答