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

Windows Forms Discussion :

[VB.NET] Conversion int-> bytes sur 4 octets


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut [VB.NET] Conversion int-> bytes sur 4 octets
    Bonjour,
    J'ai un int32 que j'aimerais envoyer par le réseau. Mon programme est en VB .net. Le serveur en C doit récupérer une structure avec un int qui doit donc occuper 4 octets.
    J'aimerais donc convertir mon int32 en bytes sur 4 octets.
    Comment faire ?

    Je dois envoyer un entier i sur 4 octets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Message As [Byte]() = System.Text.Encoding.ASCII.GetBytes(i)
    Dim OctetsEnvoyes As Integer = socket.Send(Message, 0, Message.Length, SocketFlags.None)
    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Slt,

    Je ne comprends pas ton problème, suivant ton programme, la variable Message contient bien 4 valeurs de type Byte. Où est le souci ?

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Euh oui, c'est quoi exactement ton pb ?

  4. #4
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    En fait, j'ai du mal expliquer ou c'est vraiment très simple (en fait, je sais que c'est très simple mais je ne connais pas le nom de la fonction qu'il me faut, c'est tout )
    Bref, si j'ai 122 à envoyer.
    Pour l'instant, j'envois ca sur 4 octets sous la forme : 49 50 50 00
    Or ce que je voudrais envoyer, c'est un int c'est à dire 7A (soit 122 en décimal)

    Voilà, comment faire pour envoyer sous cette forme ?
    Merci :-)
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Essaie BitConverter.GetBytes(Long) ca pourra peut être t'aider !

  6. #6
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Effectivement ca m'aide déjà pas mal
    Il me reste plus qu'à savoir comment concaténer des bytes ? quelle est la méthode la plus rapide pour ca ?
    Merci :-)
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Avec un décalage de bits. Je ne connais pas de fonction VB qui équivaut à >> en C++ pour le décalage. Par contre, une simple multiplication peut l'effectuer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim resultat As <MonTypeFinal>
    Dim pByte As Byte
    For Each pByte In BitConverter.GetBytes(<monNombre>)
        resultat = (resultat*32) + pByte
    Next

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Titou595
    Avec un décalage de bits. Je ne connais pas de fonction VB qui équivaut à >> en C++ pour le décalage.
    << et >> existent en VB.NET d'après MSDN.
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  9. #9
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Oki
    Ca marche parfaitement...par contre, je suis pas sûr que les décalages soit très rapide (du moins moins rapide qu'en C++ :-) )
    Merci beaucoup :-)
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Pense au tag Résolu

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Sinon tu as l'union (de memoire donc verifier le 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
    <StructLayout(LayoutKind.Explicit)> _
    Public Structure maStructure
        <FieldOffset(0)> Public octet1 as byte
        <FieldOffset(1)> Public octet2 as byte
        <FieldOffset(2)> Public octet3 as byte
        <FieldOffset(3)> Public octet4 as byte
        <FieldOffset(0)> Public Entier as integer
    End Class
     
    dim tt as maStructure
    tt.Entier = &H1234
    debug.writeline tt.octet1
    debug.writeline tt.octet2
    debug.writeline tt.octet3
    debug.writeline tt.octet4
    Je ne sais pas si c'est plus rapide que les décalages, mais c'est pratique à utiliser.

  12. #12
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    J'ai encore un petit problème, si je evux faire une conversion de byte(4) vers un int ?
    Chauqe byte contient de l'hexa et en plus c du little endian...je ne connais pas les fonctions vb. Y'en a t'il une pour faire ce genre de conversion ?
    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

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

Discussions similaires

  1. Conversion int vers byte non signé
    Par grunk dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/06/2011, 16h24
  2. Probleme conversion chaine en entier sur deux octets
    Par yamina_38 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 06/07/2009, 16h19
  3. Convertir integer en byte sur 2 octets
    Par kritopal dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/12/2008, 11h36
  4. Conversion int en Byte
    Par nonolerobot77 dans le forum C++
    Réponses: 2
    Dernier message: 14/02/2008, 08h17
  5. [Debutant(e)]conversion int to byte[] et inversement
    Par mune dans le forum Général Java
    Réponses: 23
    Dernier message: 21/07/2005, 14h47

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