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 de byte[] en int32


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2007
    Messages : 81
    Par défaut Conversion de byte[] en int32
    Bonjour à tous,

    je me retrouve face à un problème tout bête: je souhaite convertir une valeur qui me viens de ma base de données de byte[] vers int[].

    En fait j'ai en base des valeurs telles que celle-ci: "0x02000300070026000B01"
    Lorsque je récupère ma valeur de la base (mySqDataReader["pgc"] je stocke cette valeur dans un tableau de bytes[].
    Mon souci ici c'est que la lecture de ma valeur est censée se faire de la manière suivante:

    0002 = 2
    0003 = 3
    0007 = 7
    0026 = 38
    010B = 267

    Or, dès l'affectation de la valeur à me variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] byteChaines = (byte[])mySqDataReader["pgc"];
    je me retrouve alors avec un tableau de bytes contenant:

    2
    0
    3
    0
    7
    0
    38
    0
    11
    1

    Comment faire pour définir que mon entrée est sur 4 bits et non deux afin de retrouver les bonnes valeurs?

  2. #2
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    il faut convertir le table de bytes en hexadécimal puis en int
    lien

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2007
    Messages : 81
    Par défaut
    le problème ici est que dès la sortie SQL je me retrouve avec 1 et 11 qui sont faux.
    Je ne comprend pas comment régler ce problème avec l'exemple fourni?

  4. #4
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    Décalage de bit, ça te parle?
    Ta chaine est : "0x02000300070026000B01"
    tu va faire quelquechose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int[] tab2 = new int[byteChaine.Length/2];
    int tmp;
    for (int i=0; i<byteChaine.Length; i+=2)
    {
      tmp = (int)byteChaine[i+1];
      tmp <<= 8;
      tmp += (byteChaine[i]);
      tab2[i/2] = tmp;
    }
    un truc de ce genre, a tester

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2007
    Messages : 81
    Par défaut
    Merci a tous pour votre aide.

    Je retiendrais la solution de sisqo60 qui marche à merveille dans mon cas.
    Bonne journée à tous.

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

Discussions similaires

  1. [C#] Problème de conversion de byte[]
    Par LE NEINDRE dans le forum C#
    Réponses: 1
    Dernier message: 14/12/2006, 10h33
  2. conversion de byte en short
    Par jlassiramzy dans le forum Langage
    Réponses: 17
    Dernier message: 18/08/2006, 20h19
  3. Conversion Integer -> byte[]
    Par La Truffe dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 18h30
  4. Conversion Enum <-> byte
    Par Don ViP dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2006, 14h51
  5. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 22h08

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