Comment puis-je utiliser l'api de fichier PHP pour écrire des octets bruts?

StackOverflow https://stackoverflow.com/questions/77558

  •  09-06-2019
  •  | 
  •  

Question

Je veux écrire un flux d'octets / octets brut à une position dans un fichier. C'est ce que j'ai actuellement:

$fpr = fopen($out, 'r+');
fseek($fpr, 1); //seek to second byte
fwrite($fpr, 0x63); 
fclose($fpr);

Ceci écrit actuellement la valeur de chaîne "99". à partir du décalage d'octet 1. IE, il écrit les octets "9". et "9". Je veux juste écrire la valeur réelle d'un octet, 0x63, qui représente le nombre 99.

Merci de votre temps.

Était-ce utile?

La solution

fwrite () prend des chaînes. Essayez chr (0x63) si vous souhaitez écrire un octet 0x63 dans le fichier.

Autres conseils

C'est parce que fwrite () attend une chaîne en tant que second argument. Essayez plutôt de faire ceci:

fwrite($fpr, chr(0x63));

chr (0x63) retourne une chaîne avec un caractère avec une valeur ASCII 0x63. (Ainsi, le nombre 0x63 sera écrit dans le fichier.)

Vous essayez de passer un int à une fonction qui accepte une chaîne, elle est donc convertie en chaîne pour vous.

Ceci écrira ce que vous voulez:

fwrite($fpr, "\x63");

Si vous voulez vraiment écrire du binaire dans des fichiers, je vous conseillerais d'utiliser l'approche pack () avec le fichier API.

Voir cette question pour un exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top