Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1053 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Lecture d'un fichier binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lecture d'un fichier binaire

n°1693112
johnson950
Posté le 26-02-2008 à 22:36:17  profilanswer
 

Bonjour,
 
J'ai un petit problème en ce moment concernant la lecture d'un fichier binaire.
Pour faire simple, le ficher est composé de 3 données :
une taille sur 8 bits
un numéro de série sur 20 bits
une date sur 4 bits
 
En VB, je faisais une structure ou je pouvais spécifier un type (sachant qu'en VB la date est codé sur 4 octets) ou bien un string * 21 octets.
Je récupérais donc correctement mes informations mais en PHP je ne sais pas comment faire...
 
J'ai bien essayé "fgets" mais les informations qui me reviennent sont uniquement des strings.
 
Pourriez vous m'éclairer un peu !
 
Je vous remercie par avance !
Johnson

mood
Publicité
Posté le 26-02-2008 à 22:36:17  profilanswer
 

n°1693217
FlorentG
Posté le 27-02-2008 à 08:00:08  profilanswer
 

johnson950 a écrit :

J'ai bien essayé "fgets" mais les informations qui me reviennent sont uniquement des strings.


String ou suite d'octets, pas beaucoup de différence à la base

n°1693279
johnson950
Posté le 27-02-2008 à 10:12:50  profilanswer
 

Bonjour,
 
Effectivement il y a très peu de différence, cependant prenons par exemple une date que je dois récupérer sur 4 octets :
Lorsque je la récupère avec fgets($file,4), j'obtiens des symboles, il faut ensuite que je le convertisse mais comment faire ?
 
Merci

n°1693281
FlorentG
Posté le 27-02-2008 à 10:15:05  profilanswer
 

Avec la fonction ord(), tu peux transformer un caractère en entier, ce sera peut-être déjà plus simple :)

n°1694912
johnson950
Posté le 29-02-2008 à 09:53:29  profilanswer
 

Bonjour,
 
Merci de vos réponses!
 
J'utilise maintenant la fonction fread($handle,$n) (qui permet de lire "$n" octets dans un fichier)
Je me retrouve maintenant avec une problématique :
 
tous d'abord , je récupère 21 octets or mon identifiant possède parfois 5 caractères.
Je me retrouve alors avec toto1........... (les "....." représentent des valeurs aléatoires) sachant que toto1 se termine par une valeur nulle.
 
La seconde est de pouvoir convertir 2octets lus avec fread en nombre!
La fonction "ord" ne retourne pas la valeur "ascii" du 1er caractère par hasard?
 
Merci de votre aide !


Message édité par johnson950 le 29-02-2008 à 09:57:50
n°1694919
soju
One shot !
Posté le 29-02-2008 à 10:06:27  profilanswer
 

pour le premier problème, tu lis jusqu'à la valeur null
 
pour le 2ème problème tu récupères la valeur ascii de chaque octet avec ord et tu convertis

n°1695078
johnson950
Posté le 29-02-2008 à 14:05:46  profilanswer
 

Merci de votre réponse !
 
Alors concernant le 2e problème je l'ai résolu en utilisant un moyen différent car lors de la lecture je récupère d'abord le poids faible je fais donc :
 
$nombre1 = bin2hex(fread($file,1)); //récupération du LSB
$nombre2 = bin2hex(fread($file,1)); //récupération du MSB
$nombre = hexdec ($nombre1.$nombre2); //On fait la conversion MSB.LSB
 
Le code est peut être mal écrit qu'en pensez vous ?
 
Ensuite pour la lecture jusqu'a la valeur NULL je vois pas trop comment faire car fread lit un nombre d'octets précis il ne s'arrête pas tous seul à la valeur null.
 
Je vais me renseigner un peu sur les fonctions concernant les chaines de caractères mais si vous avez une idée je suis preneur !
 
Merci encore de votre aide !
 
Johnson


Message édité par johnson950 le 29-02-2008 à 14:09:50
n°1915714
juliet-alp​ha-bravo
Posté le 17-08-2009 à 13:34:51  profilanswer
 

Bonjour,  
 
Réponse plus d'un an après (désolé) :  
Essayer avec les fonctions pack() et unpack() de PHP qui font ça très simplement !  
 
A+
Jacky


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Lecture d'un fichier binaire

 

Sujets relatifs
Convertir un fichier .txt en ".iges" ou ".step" ou ".dxf"Problème sur mon site, impossible de télécharger un fichier
Comment faire un fichier de fonctionSauvegarder et charger des objets dans un fichier.
Sélectionner une colonne de données à partir d'un fichier TXTlecture de fichier
lecture fichier binaire de doubleLecture d'un fichier binaire (fichier C3D)
Lecture d'un fichier en mode binaireEcriture/Lecture de fichier binaire (ios::binary) avec << et >>
Plus de sujets relatifs à : Lecture d'un fichier binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR