IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Php + FileStream + BinaryWriter


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 29
    Points
    29
    Par défaut Php + FileStream + BinaryWriter
    Bonsoir à tous,

    Je cherche désespérément sur le net la fonction ou un script qui permettrait d’obtenir le même contenu de fichier.
    Le code en Visual Basic 2005 est le suivant :

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim BinaryStream As New BinaryWriter(New FileStream(NomFile, FileMode.Create))
            Try
                BinaryStream.Write(ChaineCaractere)
                BinaryStream.Close()
            Catch ex As Exception
                BinaryStream.Close()
            End Try

    Ces lignes produisent par exemple à partir de la chaine suivante ("QJIObFMeoB2eCAaUt3kaX")
    ceci : € QJIObFMeoB2eCAaUt3kaX
    Il y a une entête rajoutée pour le type de donnée et la longueur je crois.

    En PHP, j’ai essayé fwrite, f_puts…

    J’ai bien la chaine "QJIObFMeoB2eCAaUt3kaX" dans le fichier mais pas d’entête donc non lisible dans Visual Basic 2005 donc non exploitable par binaryreader.readstring

    Merci d’avance pour votre contribution

    Pascal

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    Re,

    Je pense avoir trouvé un début de réponse ici :
    http://www.ilinfo.fr/blog/post/Binar...-C-DOTNET.aspx

    Les fonctions qui servent à sauver les fichiers en binaire sont équivalentes à la seule différence que le DotNet rajoute la longeur du fichier au début sous la forme d'octets.
    Donc pour une chaîne de 130 octets : les deux octets de longueur de chaîne écrits en hexa donne 80 01 ( de 0 à 129).

    Il faut utiliser la fonction "pack" et ensuite jongler avec les conversion hex bin.
    $val2 contient la chaine + les octets de longueur du fichier (code dessous).

    Le fichier sauvé en PHP par "fwrite" par exemple est maintenant lisible à l'aide d'un BinaryReader dans DotNet.

    J'ai trouvé UNE solution mais j'amerais comprendre pourquoi PHP produit un code sans la longueur du fichier ?

    Pascal


    Code :

    function hex2bin($h)
    {
    if (!is_string($h)) return null;
    $r='';
    for ($a=0; $a<strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)})); }
    return $r;
    }

    $val = pack("v",strlen($chaine));
    $val2 = hex2bin(dechex(hexdec(bin2hex($val)) +1)).$chaine;

Discussions similaires

  1. [EDI] Quel est l'éditeur que vous recommandez pour PHP ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 400
    Dernier message: 10/04/2018, 20h08
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. L'avenir est-il au PHP ?
    Par Manolo dans le forum Langage
    Réponses: 468
    Dernier message: 11/02/2008, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo