PHP可以';不读二进制文件?

PHP可以';不读二进制文件?,php,Php,我有一个非常简单的PHP代码,可以读取二进制文件,但它不起作用: <?php $fid = fopen("sampleMdl.bin","rb"); echo "No. parts: " . fread($fid, 2) . "<br/>"; fclose($fid); ?> sampleMdl.bin的前2个字节包含整数2。但是页面在“No.parts:”之后不显示任何内容。 服务器中是否有任何设置可以避免PHP读取二进制文件?您读取的是二进制整数 $bytes

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

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

fclose($fid);
?>

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

您读取的是二进制整数

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

$n=$bytes[0]|($bytes[1]已通过使用unpack()和array_值()的组合找到解决方案:



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

文件中是什么?!数字数据。正如我所说,前2个字节包含整数2。它实际上是二进制数据吗?(文件中的字节
02 00
)如果是这种情况,那么您需要将字节解释为整数。否则PHP将采用字符串。还是ASCII(字节
30 32
=“02”在文件中)。PHP读取二进制数据很好。如果您只是按原样转储二进制数据,则由查看器/浏览器来解释此二进制乱码。在这种情况下,您显然不会输出解释为文本时显示的任何内容。请尝试
bin2hex(fread($fid,2))
进行更改。
$n = $bytes[1] | ($bytes[0] << 8); // The number
<?php
$fid = fopen("sampleMdl.bin", "rb");
$NA = array_values(unpack("Sshort", fread(fid, 2)));
echo "No. parts: " . $NA[0] . "<br/>";

fclose($fid);
?>