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

C# Discussion :

conversion hex texte vers binaire


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut conversion hex texte vers binaire
    Bonsoir,
    Je cherche à convertir une chaîne de caractère (string) hexa genre "0A0D12" provenant d'un fichier texte en séquences binaires correspondantes (ici 3 fois 8 bits) pour enregistrer dans un fichier (binaire);
    Je suis vraiment perdu car Csharp met du unicode à toutes les sauces dans les "encoders".
    J'ai fait beaucoup de recherches sur le net pour trouver du code mais pas évident.
    J'ai vu qu'il y avait une fonction parse dans byte (?).
    J'imagine que ce que je demande est un cas d'école.
    Merci

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    byte [] MyByteArray = StringToByteArray(MyHexString) ;
     
    public static byte[] StringToByteArray(string text) 
    {   
      byte []bytes = new byte[text.Length / 2];
      for(int i = 0 ; i < text.Length ; i += 2)     
        bytes[i / 2] = byte.Parse(text[i].ToString() + text[i + 1].ToString(), System.Globalization.NumberStyles.HexNumber);
       return bytes; 
    }
    Pour la fonction inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string MyHexString = System.BitConverter.ToString(MyByteArray).Replace("-","") ;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci, je vais essayer et ferai un compte rendu.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Un grand merci, ta routine tourne parfaitement.
    Et mes projets vont commencer...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    byte [] MyByteArray = StringToByteArray(MyHexString) ;
     
    public static byte[] StringToByteArray(string text) 
    {   
      byte []bytes = new byte[text.Length / 2];
      for(int i = 0 ; i < text.Length ; i += 2)     
        bytes[i / 2] = byte.Parse(text[i].ToString() + text[i + 1].ToString(), System.Globalization.NumberStyles.HexNumber);
       return bytes; 
    }
    Pour la fonction inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string MyHexString = System.BitConverter.ToString(MyByteArray).Replace("-","") ;
    Salut Graffito je veut intriduire la fonction inverse que tu à écrite dans un code existant qui permet de lire un fichier externe :

    J'ai essayé ceci, mais apparemment cela ne fonctionne pas.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
        string path = File;
     
        try
        {
          // Create an instance of StreamReader to read from a file.
          // The using statement also closes the StreamReader.
          using (StreamReader sr = new StreamReader(File))
          {
     
            //This is an arbitrary size for this example.
            char[] c = null;
     
            while (sr.Peek() >= 0)
            {
              c = new char[L];
     
              sr.Read(c, 0, c.Length);
              //The output will look odd, because
              //only five characters are read at a time.
     
              string txt = c;
     
              byte [] MyByteArray = StringToByteArray(txt);
     
              A = c;
              //B = txt;
            }
          }
        }
        catch (Exception e)
        {
          // Let the user know what went wrong.
          Print("The file could not be read:");
          Print(e.ToString());
        }
     
    public static byte[] StringToByteArray(string text)
      {
        string MyHexString = System.BitConverter.ToString(text).Replace("-", "");
    Merci d'avance, toute aide serait apprécier.

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Si txt=c, alors cette chaine contient 1 seul caractère, ce qui ne correspond ni à une syntaxe correcte ni à un codage hexadécimal qui implique un nombre de caractères pair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion de decimale vers binaire et vice versa
    Par Abdelkaoui dans le forum Qt
    Réponses: 1
    Dernier message: 17/04/2008, 11h53
  2. Conversion chaine en Base64 vers binaire
    Par akdmks dans le forum Langage
    Réponses: 3
    Dernier message: 05/11/2007, 16h55
  3. conversion de int vers binaire
    Par ben83 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/02/2007, 19h19
  4. Réponses: 2
    Dernier message: 09/12/2006, 18h01
  5. conversion text vers integer
    Par jawad.t dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 10/06/2005, 20h35

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