Schreiben von Binärdaten in eine Datei, buchstäblich
Habe ich ein array von ganzen zahlen
Array
(
[0] => Array
(
[0] => 1531412763
[1] => 1439959339
[2] => 76
[3] => 122
[4] => 200
[5] => 4550
[6] => 444
)
...
Und so weiter, ich nehme an, wenn ich Blick auf es, als ob es ein Datenbank - die Elemente der äußeren Arrays sind die Zeilen und die Elemente der inneren arrays sind die Spalten.
Will ich speichern, werden die Informationen in einer Datei, so dass ich in der Lage sein, um es später, aber ich wollen, speichern Sie es als Binär-Daten, um Speicherplatz zu sparen. Im Grunde, wenn ich schreiben Sie den ersten integer aus dem Beispiel 1531412763
auf eine Datei dauert es bis zu 10 bytes, aber wenn ich könnte, speichern Sie es als eine Ganzzahl, die es dauern würde, bis 4 bytes.
Ich habe mir eine Reihe von anderen Antworten, die alle vorschlagen, mit fwrite
ich kann nicht verstehen, wie in einer solchen Art und Weise?
- pack ?
- Wenn Sie wirklich brauchen, um Speicherplatz zu sparen, warum nicht komprimieren die Daten zu? Könnte genauso gut an dieser Stelle.
- ja das ist genau das, was ich brauchte, aber muss ich nennen
pack
auf jeden einzelnen Wert oder gibt es einen einfacheren Weg? - Sie können nicht
pack($array)
wie es ist. Aber man kann mehrere Argumente, um diepack
Funktion und Verwendung von Repeatern (*
), nach dem format. Einige Sache wiepack('i*', $int_1, $int_2,....)
für die Verpackung mehrere Ganzzahlen. Sie haben, um das array nach dem format, das Sie möchten. - Also im Grunde, wie ich es zu tun habe, ist
pack('LLSSSQ', $row[0], ..., $row[6])
dann schreiben, dass Sie als eine einzige Zeile in der Datei und beim Lesen muss ich verwendenunpack
mit dem gleichen format geben wird, mir das array zurück. Das ist perfekt, Sie können es als Antwort für jemand anderes in meiner situation. - Mögliche Duplikate von Schreiben Sie die Binär-Datei in PHP
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zum schreiben von Binärdaten in eine Datei, verwenden Sie die Funktionen
pack()
undpacken()
. Pack erzeugt ein Binär-string. Als Ergebnis ist ein string, Sie können verketten Sie die int-Werte in einem einzigen string. Dann schreiben Sie diese Zeichenkette als eine Zeile zu Ihrer Datei.Diese Weise können Sie leicht Lesen Sie mit
file()
wird die Datei in ein array von Zeilen. Dann einfachunpack()
jeder Zeile, und Sie haben Ihre original-array zurück.Etwas wie dieses :
fread($handle, $length)
.2.72GB
nach unten zu400MB
, das ist ein6.8
fache Reduzierung!