Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP read file as an array of bytes

Tags:

php

binary

I have a file written using JAVA program which has an array of integers written as binary I made an for loop over this array and write it using this method

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);
}

I'm ask about how to read this file in PHP.

like image 644
BlackRoot Avatar asked Jul 31 '13 06:07

BlackRoot


2 Answers

I believe the code you are looking for is:

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

UPDATE: Working code supplied by 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/>'; 
}
like image 192
Orangepill Avatar answered Sep 25 '22 03:09

Orangepill


You should read the file as a string and then use unpack to parse it. In this case you have stored a 32-bit integer in big endian byte order, so use:

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

The format codes are documented here: http://www.php.net/manual/en/function.pack.php

like image 27
Joni Avatar answered Sep 23 '22 03:09

Joni