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 :

Passer d'hexadecimal à décimal


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Par défaut Passer d'hexadecimal à décimal
    Bonjour,

    je reçois un ensemble de bytes sur mon port COM. J'aimerais afficher ces bytes en décimal dans une textbox :
    si je reçois 1F, qu'il affiche 31 dans la textbox.

    Pouvez-vous m'aider?

    Merci à vous ;-)

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int decValue = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

  3. #3
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Si tu as un tableau de bytes alors j'ai remarqué que ToString te renvoi la valeur décimal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    byte[] bi = new byte[] {0x1F};	
    foreach (Byte b in bi)				
    	Console.WriteLine(b.ToString());

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Par défaut
    voila,

    j'ai un tableau de bytes, que je sépare par la suite pour les mettre dans une textbox.
    J'affiche donc chaque cracatères à l'écran.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    string Temp_Interieur = msg.Substring(0, longueur_lue);        // donnée isolée de la 0 en prenant 1 donnée (1 byte)
                    string Temp_Exterieur = msg.Substring(1, longueur_lue);        // donnée isolée de la 1 en prenant 1 donnée (1 byte)
                    string Lum_Interieur = msg.Substring(2, longueur_lue);         // donnée isolée de la 2 en prenant 1 donnée (1 byte)
                    string Lum_Exterieur = msg.Substring(3, longueur_lue);         // donnée isolée de la 3 en prenant 1 donnée (1 byte)
                    string Valeur_Battery = msg.Substring(4, longueur_lue);        // donnée isolée de la 4 en prenant 1 donnée
                    string Valeur_Signal = msg.Substring(5, longueur_lue);         // donnée isolée de la 5 en prenant 1 donnée
    longueur_lue = 1.

    Donc pour les convertir en valeur décimale, je dois les encoder les bytes reçus sur port com dans un tableau de byte, et pas un tableau de string...c'est ça?

    Voila, comment je recevais mes données précédement sur mon port COM:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                while (serialPort1.BytesToRead > 0 && serialPort1.BytesToRead < 6)
                {
                    char[] buffer = new char[6];
                    int bytes_read = serialPort1.Read(buffer, 0, buffer.Length);
                    string value = new string(buffer);
                    safeInput(value);
                }
                serialPort1.DiscardInBuffer();
            }
    comment transformer la valeur "value" en byte? Quand je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    byte value = new byte(buffer);
    on me dit que l'on ne peut convertir un tableau en variable...

  5. #5
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    La méthode Read de la class SerialPort est surchargée, tu peux l'utiliser en lui passant en paramètre un taleau de byte plutôt qu'un tableau de char et éviter une conversion de type

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Par défaut
    merci....mais....heu....je découvre le c#...aussi

    faire comme ceci ne va pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                while (serialPort1.BytesToRead > 0 && serialPort1.BytesToRead < 6)
                {
                    char[] buffer = new char[6];
                    int bytes_read = serialPort1.Read(buffer, 0, buffer.Length);
                    byte value = new byte(buffer);
                    safeInput(value);
                }
                serialPort1.DiscardInBuffer();
            }
    tu ferais comment?

    'byte' does not contain a constructor thats takes 1 arguments
    pige pas

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2014, 14h33
  2. Réponses: 2
    Dernier message: 12/09/2011, 08h26
  3. [XL-2007] Passer en nombre sans décimal avec VBA possible ?
    Par Debutant10 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2011, 10h49
  4. Passer du Pascal à Delphi
    Par poppels dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2002, 21h07
  5. Passer en mode 800*600
    Par flavien tetart dans le forum Assembleur
    Réponses: 8
    Dernier message: 30/05/2002, 23h05

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