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

VB.NET Discussion :

le changement d'un string à Byte [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut le changement d'un string à Byte
    Bonjour tout le monde,

    Le problème est :

    On entre une valeur de décimal dans un "TextBox", en suite,il faut le convertir en Hex. ce que j'ai fait:

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     'exemple, 3900 = 0xF3C ==> ValueH=0xF, ValueL=0x3C
                ValueT = Hex(Value) ' Value est un parametre de la fonction
                If Len(ValueT) = 4 Then ' je dois découper en Partie H et Partie L
                    ValueH = Microsoft.VisualBasic.Left(ValueT, 2)
                Else
                    ValueH = Microsoft.VisualBasic.Left(ValueT, 1)
                End If
                ValueL = Microsoft.VisualBasic.Right(ValueT, 2)

    Le problème est que la fonction " Microsoft.VisualBasic.Left " retourne une valeur de type string, tant dis que j'ai besoin des variable de type "Byte".

    Qui a une idée ??????

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut
    Merci griftou, j'ai essayé, ça ne marche pas.

    J'ai essayé avec différentes méthodes, ça ne marche pas, quand on lance l'application, ça provoque des erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Value =3900  ' Value est de type "integer"
     
    ValueHex=Hex(Value)  ' ValueHex est de type string qui sera sous la forme FC3C par exmple
     
    ValueHigh=Convert.ToByte( ValueHex(1) + ValueHex(2) )
    ou ValueHigh est de type "Byte"

    Je lance, et ça sort une erreur.

    qui sait pourquoi ?
    Merci d'avance

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    dans ton exemple :
    'exemple, 3900 = 0xF3C ==> ValueH=0xF, ValueL=0x3C
    je ne vois pas de byte, un byte c'est un nombre entier entre 0 et 255
    tu es sur que tu ne veux pas découper un string ?
    si tu veux les octets d'un type par valeur, regarde bitconverter


    Citation Envoyé par xingjing910 Voir le message
    Je lance, et ça sort une erreur.
    qui sait pourquoi ?
    quand un exception est générée, elle est accompagné d'un message d'erreur expliquant la mauvaise "manipulation" du développeur
    si tu ne comprends pas, il est plus utile de fournir les détails (message et autres) plutot que de laisser les gens deviner
    enfin dans ton cas tu essaies de transformer un string en byte, ce qui est impossible si le string contient des caractères non numériques
    "33" peut etre converti en nombre 33
    "aazz" ne peut pas être converti en nombre entre 0 et 255
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour xingjing910
    Comme l'ont dit pol63 et griftou un "byte non signe" ou octet en francais est un nombre ne saurait depasser la valeur 255 soit en notation hexa "FF".
    A noter (de la plus haute importance) est que "FF" est un un symbole pour nos pauvres yeux humains(la machine ne comprends que des bits meme pas des octets).......

    Maintenant mettons les choses au clair en VB.Net:
    -Hex en VB.Net renvoie un "string" ou representation hexa pour xingjing910
    -il existe egalement une autre fonction VB.Net &H (reliquat du temps ou les gens programmait directement la machine en binaire ...pardon en hexa)........
    Elle fait le travail inverse:
    -on lui donne un "string" qui represente un nombre hexa et elle le convertit en nombre et dans le type desiree...
    Nos moutons :
    Tu aurais du -mais bon pour un debutant c'est beaucoup -tirer parti des remarques donnees par les collegues du forum et observer que:
    -le plus grand caractere dans la "string" renvoye par Hex est "F" (=15)
    -en parsant ta chaine par groupes de 2 caracteres tu ne pourras jamais depasser "FF" (=255) soit ........un byte.

    voici le code qui parse la chaine par groupe de 2 caracteres et convertit chaque groupe en Byte correpondant avec Convert.ToByte(string,16) en indiquant la base de conversion 16 -c.à.d hexa:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'exemple, 3900 = 0xF3C ==> ValueH=0xF, ValueL=0x3C
     
            Dim valeur As Integer = 3900
            'primo ------- conversion du nombre fourni sous forme de "string" en  nombre hexa 
            '------- & affichage
            Dim nb As Integer = &HF3C
            Me.lblValeurHexadecimal.Text = nb.ToString
     
            'secundo -------conversion du nombre valeur en "string" hexa---------
            Dim str As String = Hex(valeur)
     
            Me.lblStringHexa.Text = str
     
            'tertio ------le plus grand byte est borne :=255
            '------sa valeur hexa represente en "string hexa(visuelle)" est FF...
            Me.lblGrandByte.Text = Convert.ToByte("FF", 16)
     
            '-------variante 1 :conversion de chaque car de la chaines hexa en byte------
            Me.lblValeurOneChar.Text = ""
            For Each car As Char In str
                Me.lblValeurOneChar.Text = Me.lblValeurOneChar.Text & Convert.ToByte(car, 16) & vbCrLf
     
            Next
            '-------variante 2 :pour respester  ce qui a ete dit en tertio 
            '-------decoupage de la chaine par groupe de 2 caracteres  
            '-------et conversion en valeur byte------
            Me.lblValeurTwoChar.Text = ""
            Dim twoChar As String = String.Empty
            While str.Length <> 0
                twoChar = Microsoft.VisualBasic.Right(str, 2)
                Me.lblValeurTwoChar.Text = Me.lblValeurTwoChar.Text & Convert.ToByte(twoChar, 16) & vbCrLf
                If str.Length < 2 Then
                    str = str.Substring(0, str.Length - 1)
                Else
                    str = str.Substring(0, str.Length - 2)
                End If
     
            End While
     
     
     
     
     
        End Sub
     
    End Class
    bon code...............

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    dans ton exemple :
    'exemple, 3900 = 0xF3C ==> ValueH=0xF, ValueL=0x3C
    je ne vois pas de byte, un byte c'est un nombre entier entre 0 et 255
    tu es sur que tu ne veux pas découper un string ?
    si tu veux les octets d'un type par valeur, regarde bitconverter




    quand un exception est générée, elle est accompagné d'un message d'erreur expliquant la mauvaise "manipulation" du développeur
    si tu ne comprends pas, il est plus utile de fournir les détails (message et autres) plutot que de laisser les gens deviner
    enfin dans ton cas tu essaies de transformer un string en byte, ce qui est impossible si le string contient des caractères non numériques
    "33" peut etre converti en nombre 33
    "aazz" ne peut pas être converti en nombre entre 0 et 255

    Merci de votre temps pour répondre ma question.

    Euh, pour un byte, ce que je comprends, c'est que 0-0xFF . J'ai essayé:

    Dim temp As Byte
    temp=&H3C

    Après, j'ai mis la variable "temp" dans la fonction final qui contient des paramètres byte, et ça a marché. Donc je ne suis pas sure que pour un "Byte", c'est forcément des chiffres.

    l'erreur que j'ai eu quand je lance, c'est que le format des paramètres sont incorrects. Car j'ai fait d'abord prendre les infos que
    1: nous avons entré dans un " TextBox",
    2:après je découpe de infos pour la partie fort et la partie faible.
    3: J'ai fait changer le format en utilisant "Convert.ToByte()"

    J'ai essayé différentes méthodes, la méthode "Convert.Byte() est la dernière que j'ai trouvé sur internet. Pour l'instant, je n'ai pas autre idée.

    Merci encore pour ceux qui prennent leur temps pour participer à cette discussion .

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut
    Merci beaucoup MABROUKI de ton temps pour m'expliquer.

    je vais essayer. Merci encore pour vous tous, j'ai appris pas mal de choses en posant des questions dans ce forum. ça m'a beaucoup aidé.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/05/2007, 10h45
  2. Convertir String->byte et byte->blob
    Par biba158 dans le forum JDBC
    Réponses: 5
    Dernier message: 07/05/2007, 11h52
  3. String -> byte[] -> String
    Par SheikYerbouti dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2006, 11h49
  4. [C# 2] Comment convertir string > byte[] ?
    Par Royd938 dans le forum C#
    Réponses: 2
    Dernier message: 20/06/2006, 10h39
  5. [Array][String]byte[]
    Par beb-mbs dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 25/08/2005, 06h16

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