Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Pack () und File_put_Contents (), um in Binärdateien zu schreiben

Verwenden Sie Pack () und File_put_Contents (), um in Binärdateien zu schreiben

M66 2025-06-03

In PHP ist die Kombination der Funktion pack () und file_put_contents () bei der Verarbeitung von Binärdaten sehr praktisch. Pack () kann Daten im angegebenen Format in binäre Zeichenfolgen umwandeln, während file_put_contents () für das Schreiben dieser Binärdaten in eine Datei verantwortlich ist. In diesem Artikel wird ausführlich erläutert, wie diese beiden Funktionen zum Schreiben strukturierter Daten in eine binäre Datei verwendet werden.

1. Einführung in die Funktion pack ()

Die Funktion pack () wandelt Variablen gemäß dem Formatcode in binäre Zeichenfolgen um. Es unterstützt eine Vielzahl von Formatcodes wie:

  • C : Signierte Zeichen (1 Byte)

  • C : Unsignierte Zeichen (1 Byte)

  • S : Signierte kurze Ganzzahl (2 Bytes)

  • S : Unsigned Short Ganzzahl (2 Bytes)

  • I : Signierte Ganzzahl (4 Bytes)

  • I : Unsigned Ganzzahl (4 Bytes)

  • F : schwimmende Punktzahl (4 Bytes)

  • D : doppelte Präzisionsschwimmpunktzahl (8 Bytes)

Weitere Formate finden Sie in der offiziellen PHP -Dokumentation.

2. Einführung in die Funktion von File_put_Contents ()

Die Funktion "Datei_put_Contents () wird verwendet, um eine Zeichenfolge in eine Datei zu schreiben. Der Dateiinhalt wird standardmäßig überschrieben oder kann auf den Anhangsmodus gesetzt werden.

3. Beispielcode: Schreiben Sie strukturierte Daten in Binärdateien

Angenommen, wir möchten eine Datenstruktur schreiben, die ID (4-Byte-Ganzzahl), Status (1-Byte-Zeichen), Gleitpunktwert (4-Byte-Gleitpunktzahl) enthält.

 <?php
// Datenvorbereitung
$id = 123456;           // Ganze Zahl
$status = 1;            // Zustand,1字节无符号Ganze Zahl
$value = 3.14159;       // Schwimmende Punktzahl

// verwenden pack() Daten nach Format packen
// Formatbeschreibung:I - Unsigned Ganzzahl,C - Nicht signierte Zeichen,f - Schwimmende Punktzahl
$binaryData = pack('ICf', $id, $status, $value);

// Schreiben Sie in Binärdateien
file_put_contents('data.bin', $binaryData);

echo "数据已Schreiben Sie in Binärdateien。\n";
?>

Nach dem Ausführen des oben genannten Code wird eine Datei namens Data.bin im aktuellen Verzeichnis generiert, und der Dateiinhalt ist die entsprechenden Binärdaten.

4. Beispiel für das Lesen von Binärdateien

Um zu überprüfen, ob das Schreiben erfolgreich ist, können wir Datei_get_Contents () verwenden, um den Dateiinhalt zu lesen und ihn mit pack () zu analysieren:

 <?php
// Binärdateien lesen
$data = file_get_contents('data.bin');

// Daten auspacken
// Das Format sollte mit der Schreibzeit übereinstimmen
$result = unpack('Iid/Cstatus/fvalue', $data);

print_r($result);
?>

Das Ausgabeergebnis sollte sein:

 Array
(
    [id] => 123456
    [status] => 1
    [value] => 3.14159
)

5. Dinge zu beachten

  1. Byte Order : Pack () verwendet standardmäßig die Maschinenbyte -Bestellung. Wenn es über Plattformen oder Netzwerke übertragen wird, wird empfohlen, das Byte -Auftragsformat anzugeben (z. B. N ist eine nicht signierte Ganzzahl von Netzwerk -Byte -Bestellung).

  2. Formatanpassung : Die Formate von pack () und pack () müssen nacheinander entsprechen, andernfalls wird ein Fehler analysiert.

  3. Dateiberechtigungen : Stellen Sie sicher, dass PHP über ausreichende Berechtigungen verfügt, um den Zielordner beim Schreiben von Dateien zu betreiben.