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 un uint/long en longueur bytes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    rien
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut Convertir un uint/long en longueur bytes
    salut !

    j'viens demander un petit coup d'pouce a propos de convertion de bytes.

    Je m'explique , par exemple je met ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    long test = 010203040506070809
    et je voudrais l'obtenir en bytes car j'ai une fonction d'envoie qui gère uniquement en bytes , donc comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0x01, 0x02, 0x03 (ect vous m'avez compris)
    donc le passez en big endian ect. Mais c'est pas le problème , j'ai déjà mon code de convertion de uint en LE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            byte[] To4BytesLE(uint data)
            {
                byte[] b = new byte[4];
                b[0] = (byte)data;
                b[1] = (byte)(((uint)data >> 8) & 0xFF);
                b[2] = (byte)(((uint)data >> 16) & 0xFF);
                b[3] = (byte)(((uint)data >> 24) & 0xFF);
                return b;
            }
    Mais le problème c'est que mon long ou mon uint peut avoir une longueur aléatoire. Donc je me suis dit qu'il faudrait mettre une condition et c'est pour celà que je demande de l'aide , mettre une condition pour que ça calcul la longueur automatiquement et que ça retourne (un autre exemple) 010203 en 0x01 , 0x02 , 0x03.

    ça a l'air confu mais ça m'aiderais beaucoup ,

    Merci !

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Salut,

    Je n'ai pas tout compris mais pour passer de long à byte la fonction suivante ne te suffit pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    long test = 010203040506070809;
                byte[] bc = BitConverter.GetBytes(test);
                Console.WriteLine(BitConverter.ToString(bc));

  3. #3
    Membre averti
    Homme Profil pro
    rien
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    Citation Envoyé par FrameBreak Voir le message
    Salut,

    Je n'ai pas tout compris mais pour passer de long à byte la fonction suivante ne te suffit pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    long test = 010203040506070809;
                byte[] bc = BitConverter.GetBytes(test);
                Console.WriteLine(BitConverter.ToString(bc));
    Non , car j'obtient 19-47-FE-7C-9C-3F-24-00 , et j'veux obtenir 01-02-03-04-05-06-07-08-09 , tu vois la différence ? J'veux pas modifier la valeur pour calculé quelques choses en bytes , mais juste changer le format pour les mettres en bytes.

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Dans ce cas là, je pense qu'il faut passer par une conversion en chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                long test = 010203040506070809;
                byte[] bc = Encoding.ASCII.GetBytes(test.ToString());
                Console.WriteLine(Encoding.ASCII.GetString(bc));

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Et qu'est ce que c'est senser donner si:
    ?

  6. #6
    Membre averti
    Homme Profil pro
    rien
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    je me suis déjà trompé , tout les uint & ulong seront avec un "0x" devant , ce sont des offsets.

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

Discussions similaires

  1. convertir un objet en tableau de byte
    Par hammag dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 12/10/2006, 13h12
  2. [C#] Comment convertir un type long en DateTime ?
    Par guillaume16 dans le forum C#
    Réponses: 4
    Dernier message: 22/06/2006, 14h45
  3. Convertir un entier long en string
    Par aroueche dans le forum C
    Réponses: 5
    Dernier message: 12/07/2004, 13h48
  4. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34

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