pack et unpack...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pack et unpack...

par sadeq » 05 déc. 2006, 14:08

Ecriture et lecture binaire
<?php 
//Ouverture en mode Write binary 
$file= fopen ("myFile.dat","wb");  

//les réels à écrire 
$x=1.11111;  
$y=2.22222;  

//Ecriture des réels 
fwrite ($file,pack("d",$x)); //ecriture de 8 octets
fwrite ($file,pack("d",$y)); //ecriture de 8 octets

//fermer 
fclose ($file); 

//Lecture en mode Read binary 
$file= fopen ("myFile.dat","rb");  
while (!feof($file)){ 
	$data = fread($file, 8); //lire de 8 octets 
    if ($data){
		$data = unpack ("d", $data); //décodage des octets
     	echo "<BR> data is : ".implode("",$data);  //concaténation des élèments du tableau unpacked
	}
}  
echo"<BR> end loop";  

//fermer 
fclose($file);
?>

pack et unpack...

par dangre » 30 nov. 2006, 00:29

Bonjour,

debutant en PHP, je suis en train d'ecrire mes premiers scripts. Dans l'un d'eux je dois ecrire des donnees dans un fichier au format proprietaire. Voulant stocker des coordonnees (de type double), j'ai ecris le code suivant:

Code : Tout sélectionner

$file= fopen ("myFile.dat","wb"); $x=1.11111; $y=2.22222; $binaryData = pack("dd",$x,$y); fwrite ($file,$binaryData); $data = unpack ("dd",$binaryData); foreach ($data as $d){ echo "<BR> d is : ".$d; } echo"<BR> end loop"; fclose ($file);
et a l'affichage j'obtiens:

d is : 1.11111
end loop

ce qui signifie que la seconde valeur est perdue... et je ne comprends pas mon erreur. Je ne suis pas un specialiste de la conversion binaire, mais je ne vois pas trop ou ca plante.

J'ai meme essaye de separer les conversions en binaire pour chaque variable:

Code : Tout sélectionner

$binaryData = pack("d",$x); fwrite ($file,$binaryData); $binaryData = pack("d",$y); fwrite ($file, $binaryData);
mais rien n'y fait, a la relecture du fichier je n'est qu'une seule valeur presente.

Merci pour votre aide a venir,
dangre

P.S.: ma version de php est 5.1.6 d'apres le info.php