Position actuelle: Accueil> Derniers articles> Utilisez pack () et file_put_contents () pour écrire dans des fichiers binaires

Utilisez pack () et file_put_contents () pour écrire dans des fichiers binaires

M66 2025-06-03

Dans PHP, la combinaison de la fonction Pack () et File_put_contents () est très pratique lors du traitement des données binaires. pack () peut convertir les données en chaînes binaires au format spécifié, tandis que File_put_contents () est responsable de l'écriture de ces données binaires dans un fichier. Cet article expliquera en détail comment utiliser ces deux fonctions pour écrire des données structurées dans un fichier binaire.

1. Fonction Introduction à Pack ()

La fonction Pack () convertit les variables en chaînes binaires en fonction du code de format. Il prend en charge une variété de codes de format, tels que:

  • C : caractères signés (1 octet)

  • C : caractères non signés (1 octet)

  • S : entier court signé (2 octets)

  • S : entier court non signé (2 octets)

  • I : Signé entier (4 octets)

  • I : entier non signé (4 octets)

  • F : Numéro de point flottant (4 octets)

  • D : Numéro de point flottant à double précision (8 octets)

Pour plus de formats, veuillez vous référer à la documentation officielle PHP.

2. Introduction à File_put_Contents () Fonction

La fonction file_put_contents () est utilisée pour écrire une chaîne dans un fichier. Le contenu du fichier sera écrasé par défaut, ou il peut être défini en mode annexe.

3. Exemple de code: Écrivez des données structurées dans des fichiers binaires

Supposons que nous voulons écrire une structure de données qui contient ID (entier de 4 octets), statut (caractères 1 octet), valeur à virgule flottante (numéro de point flottant de 4 octets).

 <?php
// Préparation des données
$id = 123456;           // Entier
$status = 1;            // État,1字节无符号Entier
$value = 3.14159;       // Numéro de point flottant

// utiliser pack() Pack Data par format
// Description du format:I - Entier non signé,C - Personnages non signés,f - Numéro de point flottant
$binaryData = pack('ICf', $id, $status, $value);

// Écrire dans des fichiers binaires
file_put_contents('data.bin', $binaryData);

echo "数据已Écrire dans des fichiers binaires。\n";
?>

Après avoir exécuté le code ci-dessus, un fichier nommé Data.bin sera généré dans le répertoire actuel et le contenu du fichier est les données binaires correspondantes.

4. Exemple de lecture de fichiers binaires

Pour vérifier si l'écriture est réussie, nous pouvons utiliser File_get_Contents () pour lire le contenu du fichier et l'analyser avec unback () :

 <?php
// Lire les fichiers binaires
$data = file_get_contents('data.bin');

// Déballage des données
// Le format doit être cohérent avec le temps d&#39;écriture
$result = unpack('Iid/Cstatus/fvalue', $data);

print_r($result);
?>

Le résultat de sortie doit être:

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

5. Choses à noter

  1. Commande d'octet : pack () utilise la commande d'octet de la machine par défaut. S'il est transmis sur des plates-formes ou des réseaux, il est recommandé de spécifier le format de commande d'octets (tel que n est un entier de réseau de l'octet de réseau).

  2. Correspondance du format : les formats de pack () et de dismack () doivent correspondre un par un, sinon une erreur sera analysée.

  3. Autorisations de fichiers : assurez-vous que PHP a des autorisations suffisantes pour faire fonctionner le dossier cible lors de la rédaction de fichiers.