PHP - 读取8位整数

时间:2011-04-29 02:09:50

标签: 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);

2 个答案:

答案 0 :(得分:4)

您要查找的是char数据类型。现在有两个版本,签名(小写c)和无符号(大写C)。只需使用对您的数据正确的那个。

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

此外,如果数据文件只是一堆字节而没有别的,并且你知道它的长度,你可以这样做。 (如果长度为16行签名字符。)

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

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

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

答案 1 :(得分:1)

以下内容应该符合您的要求(ord):

$dat_handle = "intergers.dat";
$dat_file = fopen($dat_handle, "rb");
$dat_data = ord(fread($dat_file, 1));

您要做的是检索单个字节的整数值。因为您一次只读取单个字节,所以您将始终只有一个有效的ASCII字符。 ord返回该一个字符的二进制值。