PHP - 读取8位整数

Maj*_*oht 2 php binary integer unpack pack

我有一个全是 8 位整数的二进制文件。我尝试使用 php unpack() 函数,但无法获取任何适用于 1 字节整数的参数。我尝试将数据与虚拟字节组合起来,以便我可以使用“n”/“v”参数。我正在使用 Windows 机器来执行此操作。最终我想要一个函数返回基于 8 位二进制整数字符串的整数数组。我尝试过的代码如下 -

$dat_handle = "intergers.dat";
$dat_file = fopen($dat_handle, "rb");
$dat_data = fread($dat_file, 1);
$dummy = decbin(0);
$combined = $dummy.$dat_data;
$result = unpack("n", $combined);
Run Code Online (Sandbox Code Playgroud)

Mar*_*lin 5

您要寻找的是 char 数据类型。现在有两个版本,有符号(小写c)和无符号(大写C)。只需使用适合您的数据的那个即可。

<?php
    $byte = unpack('c', $byte);
?>
Run Code Online (Sandbox Code Playgroud)

另外,如果数据文件只是一堆字节而没有其他内容,并且您知道它的长度,则可以执行此操作。(如果长度是连续 16 个有符号字符。)

<?php
    $bytes = unpack('c16', $byte);
?>
Run Code Online (Sandbox Code Playgroud)

如果您不知道文件中有多少字节,但知道只有字节,则可以使用星号代码读取直到 EOF。

<?php
    $bytes = unpack('c*', $byte);
?>
Run Code Online (Sandbox Code Playgroud)