用php从二进制文件中提取数据

用php从二进制文件中提取数据,php,binary,Php,Binary,我必须从二进制文件中提取一些数据。数据以十六进制标记开始。 我必须首先找到这个标记,然后提取后面的x字节 PHP适合于文本文件操作 有人有好主意用二进制数据来做吗 谢谢 您应该查看和函数 下面是一个示例,它将整个文件读入缓冲区,并使用unpack()获取前两个字符的值: $fp = fopen("binary.txt", "r"); fseek($fp, 0, SEEK_END); $fs = ftell($fp); fseek($fp, 0, SEEK_SET); $binary = frea

我必须从二进制文件中提取一些数据。数据以十六进制标记开始。 我必须首先找到这个标记,然后提取后面的x字节

PHP适合于文本文件操作

有人有好主意用二进制数据来做吗

谢谢

您应该查看和函数

下面是一个示例,它将整个文件读入缓冲区,并使用
unpack()
获取前两个字符的值:

$fp = fopen("binary.txt", "r");
fseek($fp, 0, SEEK_END);
$fs = ftell($fp);
fseek($fp, 0, SEEK_SET);
$binary = fread($fp, $fs);
fclose($fp);
$unpacked = unpack("c2", $binary);
您应该查看和函数

下面是一个示例,它将整个文件读入缓冲区,并使用
unpack()
获取前两个字符的值:

$fp = fopen("binary.txt", "r");
fseek($fp, 0, SEEK_END);
$fs = ftell($fp);
fseek($fp, 0, SEEK_SET);
$binary = fread($fp, $fs);
fclose($fp);
$unpacked = unpack("c2", $binary);

您不需要任何特殊的功能,如pack或unpack等,尽管pack可以用于指定要搜索的针。 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);
}

<>你可以考虑使用和迭代的方式,如果文件的大小很大,那样会消耗很多内存。但这是一个单独的问题。

您不需要任何特殊的功能,如打包或解包等。尽管打包可以用于指定要搜索的针。 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);
}
<>你可以考虑使用和迭代的方式,如果文件的大小很大,那样会消耗很多内存。但这是另外一个问题。

试试看