我有一个所有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);
答案 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
返回该一个字符的二进制值。