10

我有一个使用JAVA程序编写的文件,其中有一个整数数组写成二进制我在这个数组上做了一个for循环并使用这个方法写它

public static void writeInt(OutputStream out, int v) throws IOException {
    out.write((v >>> 24) & 0xFF);
    out.write((v >>> 16) & 0xFF);
    out.write((v >>> 8) & 0xFF);
    out.write((v >>> 0) & 0xFF);
}

我被问到如何在PHP.

4

2 回答 2

15

我相信您正在寻找的代码是:

$byteArray = unpack("N*",file_get_contents($filename));

更新:由 OP 提供的工作代码

$filename = "myFile.sav"; 
$handle = fopen($filename, "rb"); 
$fsize = filesize($filename); 
$contents = fread($handle, $fsize); 
$byteArray = unpack("N*",$contents); 
print_r($byteArray); 
for($n = 0; $n < 16; $n++)
{ 
    echo $byteArray [$n].'<br/>'; 
}
于 2013-07-31T06:39:50.627 回答
4

您应该将文件作为字符串读取,然后使用 unpack 对其进行解析。在这种情况下,您以大端字节顺序存储了一个 32 位整数,因此请使用:

$out = unpack("N", $in);

格式代码记录在这里:http ://www.php.net/manual/en/function.pack.php

于 2013-07-31T06:38:49.587 回答