我必须从二进制文件中提取一些数据。数据以十六进制标记开始。 我先找到这个标记,然后提取x个字节。用php从二进制文件中提取数据
PHP适用于文本文件操作。
有人有一个好主意,用二进制数据做到这一点?
谢谢!
我必须从二进制文件中提取一些数据。数据以十六进制标记开始。 我先找到这个标记,然后提取x个字节。用php从二进制文件中提取数据
PHP适用于文本文件操作。
有人有一个好主意,用二进制数据做到这一点?
谢谢!
你不需要任何特殊功能,如包或解压缩等。 ..虽然包装可能会用于指定要搜索的针。 php不对字符串应用任何字符编码,它将它们保留原样,所以默认情况下它是二进制友好的。
$hexMarker = 0x70000000;// or whatever
$binaryData = file_get_contents($filename);
$x = 5;
$pos = strpos($binaryData, $hexMarker);
if ($pos !== false) {
$start = $pos + strlen($hexMarker);
echo substr($binaryData, $start, $x);
}
你可以考虑以迭代方式使用fopen和fread如果文件的大小很庞大,file_get_contents会消耗大量的内存在这种情况下。但无论如何,这是一个单独的问题。
尝试[unpack()](http://sk.php.net/manual/en/function.unpack.php) – Vyktor 2012-01-15 19:26:11