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 :

Convertir string en int


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut Convertir string en int
    Bonjour,

    je rencontre un problème pour convertir une string en int.

    Dans mon code, je récupère une string (par exemple "303B") et j'aimerais la considérer comme une valeur hexadécimale (0x303B) de manière à pouvoir travailler sur les bits.

    Les tests que j'ai effectués, convertissent la string en sa valeur entière (303B = 12347), ce qui n'est pas le résultat souhaité.

    Auriez-vous une idée pour effectuer ceci ?

    Merci,

    auré

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par aure298 Voir le message
    Les tests que j'ai effectués, convertissent la string en sa valeur entière (303B = 12347), ce qui n'est pas le résultat souhaité
    Ben c'est quoi le résultat souhaité alors ? je vois pas quel autre résultat tu pourrais vouloir...

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    je voudrais que la valeur récupérée soit considérée comme une valeur hexadécimale et non comme un entier ou une string.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Salut,

    une fois, j'ai eu besoin d'une méthode de ce genre,
    je ne sais pas si c'est exactement ce que tu cherches :

    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
            /// <summary>
            /// permet de convertir un entier 16 bits sous forme de string en hexadécimal en tableau de 2 octets
            /// </summary>
            /// <param name="champ">le champ à convertir</param>
            /// <returns>le tableau de 2 octets contenant le champ converti</returns>
            private byte[] ConvertirStringHexaToByte(string champ)
            {
                byte[] champByte;
     
                Int16 champInt = Int16.Parse(champ,NumberStyles.HexNumber);
                champByte = BitConverter.GetBytes(champInt);
     
                if (BitConverter.IsLittleEndian)
                {
                    byte[] temp = { champByte[0], champByte[1] };
                    champByte[0] = temp[1];
                    champByte[1] = temp[0];
                }
     
                return champByte;
            }
    en espérant que ça puisse t'aider...

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par aure298 Voir le message
    je voudrais que la valeur récupérée soit considérée comme une valeur hexadécimale et non comme un entier ou une string.
    "une valeur hexadécimale", ça n'a pas de sens... l'hexadécimal est juste une représentation du nombre. Peut importe qu'il soit représenté en décimal, en binaire, en octal ou en hexadécimal, c'est toujours un nombre. Au final, sa représentation interne est toujours binaire...

    Si tu veux obtenir ou modifier la valeur d'un bit en particulier, tu peux utiliser les opérateurs | (ou binaire), & (et binaire), et ~ (non binaire).

    Donc, en résumé : si tu as une chaine "303B" qui représente ton nombre, tu le parses pour obtenir un int :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int valeur = Convert.ToInt32("303B", 16);
    Comme tu l'avais déjà vu, ça te donne un entier qui vaut 12347 en décimal (et qui vaut toujours 0x303B en hexa...)

    Pour récupérer le bit de poids faible, tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int bitPoidsFaible = valeur & 1;
    Ou d'une manière plus générale, pour récupérer le bit d'ordre n :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bool GetBit(int number, int bitOrder)
    {
        int mask = 1 << bitOrder;
        int result = number & mask;
        return (result != 0);
    }
    Et pour le modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void SetBit(ref int number, int bitOrder, bool bitValue)
    {
        int mask = 1 << bitOrder;
        if (bitValue)
        {
            number = number | mask;
        }
        else
        {
            number = number & ~mask;
        }
    }

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    Merci pour vos réponses.

    Je vais essayer ce que vous me conseillez.

    auré

Discussions similaires

  1. Soucis pour convertir string en int avec readline
    Par Angelssen dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/01/2010, 12h58
  2. tmap : convertir string en int
    Par pymraee dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 19/08/2009, 12h47
  3. Réponses: 3
    Dernier message: 25/05/2009, 14h36
  4. Convertir String en int
    Par Green Lemon dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2007, 16h58
  5. [débutant] convertir string en int
    Par MayOL69bg dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2007, 10h20

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