如何在 PHP 中检索打包二进制文件的一部分?

Posted

技术标签:

【中文标题】如何在 PHP 中检索打包二进制文件的一部分?【英文标题】:How to retrieve a part of packed binary in PHP? 【发布时间】:2021-06-05 16:35:10 【问题描述】:

我有打包好的数据:

$binarydata = pack("C*", ...$chunk);

我知道标头来自该 $binarydata 的 [1..189] nodeJs 中的等价物:

var bufferHeader = Buffer.from(data, 1, 189)

如何从$binarydata 检索该部分?

【问题讨论】:

【参考方案1】:

substr() 可以对二进制字符串执行此操作。

$binarydata = pack("C*", ...$chunk);
$bufferHeader = substr($binarydata, 1, 189); // offset, length

这是一个简单的例子:

$chunk = [0, 12, 34, 0, 56, 100, 128, 200, 225, 255];
$binarydata = pack("C*", ...$chunk);

// extract header 
$header = substr($binarydata, 2, 4);
print_r(unpack("C*",$header));

输出:

Array
(
    [1] => 34
    [2] => 0
    [3] => 56
    [4] => 100
)

live demo

【讨论】:

它回答了你的问题吗?

以上是关于如何在 PHP 中检索打包二进制文件的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WebApi 二进制文件中检索控制器方法?

可以在php中打包带有位字段的c结构吗?

如何从linux二进制文件中存储和检索数据

webpack打包二进制文件报错

检索存储在我的 Mlab 中的音频 - 二进制文件

如何将 Python 3 控制台应用程序打包为 Windows 二进制文件?