2013-07-31 12 views
6

Ich habe eine Datei JAVA Programm geschrieben, unter Verwendung, die eine Reihe von ganzen Zahlen hat als binäre geschrieben I ein für die Schleife über dieses Array aus und schreibt sie unter Verwendung dieses VerfahrensPHP lesen Datei als ein Array von Bytes

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 Ich frage nach, wie man diese Datei in PHP liest.

+0

schauen Sie auf [entpacken] (http://www.php.net/manual/en/function.unpack.php) – Orangepill

+0

@Orangepill Ich bin neu in PHP und es ist schwer zu wählen mit Handbuch allein können Sie mir helfen ein Stück Code angenommen wir beginnen Datei mit diesem Code zu lesen '$ filename =" myFile.sav "; $ handle = fopen ($ filename, "rb"); $ contents = fread ($ handle, filesize ($ filename)); ' – BlackRoot

Antwort

10

Ich glaube, der Code Sie suchen, ist:

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

UPDATE: Arbeitscode von OP geliefert

$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/>'; 
} 
+0

Danke Danke Danke Orangepill das ist, was ich suche. der Code, den ich verwende: '$ filename =" myFile.sav "; $ handle = fopen ($ filename, "rb"); $ fsize = Dateigröße ($ Dateiname); $ contents = fread ($ handle, $ fsize); $ byteArray = entpacken ("N *", $ Inhalt); print_r ($ byteArray); für ($ n = 1; $ n <= 16; $ n ++) { \t echo $ byteArray [$ n]. '
'; } ' – BlackRoot

+0

Ich konnte das nicht zur Arbeit bringen. Der Beispielcode schlägt beim Entpacken fehl. Vielleicht wegen der Datei, die ich versuche zu lesen? – FredFury

4

Sie sollten die Datei als String lesen und dann mit entpacken. In diesem Fall haben Sie eine ganze Zahl 32-Bit gespeichert in Big-Endian-Byte-Reihenfolge, so verwenden:

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

Die Formatcodes sind hier dokumentiert: http://www.php.net/manual/en/function.pack.php

+0

Danke Joni, aber wenn ich diesen Code ausführe bekomme ich ein Array mit einem Element nur die Lösung von Orangepill ist so wunderbar und bekomme alle Elemente in meiner Datei verwende diesen Code: ' $ filename =" myFile.sav "; $ handle = fopen ($ filename, "rb"); $ fsize = Dateigröße ($ Dateiname); $ contents = fread ($ handle, $ fsize); $ out = entpacken ("N", $ Inhalt); print_r ($ out); ' Dieser Code gibt nur ein Element zurück – BlackRoot

+0

Wenn Ihre Datei den ganzen Weg bis zum Ende gepackt hat und nicht nur einer, können Sie den Asterix' * 'Formatierungscode verwenden, um alle zu erhalten. Oder Sie können eine Zahl hinzufügen, um anzugeben, wie viele Ints gelesen werden sollen. Dies ist alles auf der verlinkten Seite dokumentiert. – Joni

+0

es ist wahr, danke Joni – BlackRoot