PHP - 读取8位整数

标签 php binary integer pack unpack

我有一个全是 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);

最佳答案

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

<?php
    $byte = unpack('c', $byte);
?>

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

<?php
    $bytes = unpack('c16', $byte);
?>

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

<?php
    $bytes = unpack('c*', $byte);
?>

关于PHP - 读取8位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827151/

相关文章:

php - var_dump 结果中的数字是多少?

java - 将 Java byte[] 对象插入到 H2 表中,然后再次检索它

php - 字符串数字到整数不工作 PHP

php - 我的 http ://localhost/redirecting to www. localhost.com

php - 替换 PHP 中的字符但不超过一次

serialization - Rust 数据结构的二进制序列化

javascript - 统一码转二进制?

java - 制定 Intent ,作为 Activity 的一部分?

c - 将两个不同的整数相加

php - ModX 革命路径问题