Conversion hex/dec en vb

kamel_bxz Messages postés 7 Statut Membre -  
kaadooze Messages postés 3 Statut Membre -
Bonjour,
je veux deux fonction de conversion en VB6
-conversion hexa/dec
-conversion hexa/bin
merci
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. Celestus
     
    Polux31, tu es une merde.
    Ce genre de réponses n'apportent rien et ne sont que le reflet de ta pitoyable intelligence.
    Va mourir.

    Voici les fonctions que j'utilise :

    Function hexadecimal_en_decimal(chaine_hexa)
    resultat = 0
    For i = Len(chaine_hexa) To 1 Step -1 ' Depuis i = longueur chaine à i = 1
    longueur = Mid(chaine_hexa, i, 1) ' renvoit le (1) caractère à partir de la position i de la chaine (on commence donc par la fin)
    position = Instr("0123456789ABCDEF", UCase(longueur))-1 ' On prend milieu, on met en majuscule au cas où on aurait écrit abcdef au lieu de ABCDEF,
    ' On met dans position la position du 1er caractère de milieu dans 0123456789ABCDEF et on retire 1 => on a converti de l'hexa en dec
    If position >= 0 Then
    valeur = position * (16 ^ (Len(chaine_hexa)-i)) ' Formule de maths de conversion
    resultat = resultat + valeur
    Else
    resultat = 0
    i = 0 ' Fin de la boucle en cas d'erreur
    End If
    Next
    hexadecimal_en_decimal = resultat
    End Function

    Function decimal_en_hexadecimal(chaine_dec)
    Do While chaine_dec > 0
    chaine_dec_tmp = Int(chaine_dec/16)
    If chaine_dec - (chaine_dec_tmp * 16) = 10 Then
    caractere_hexa = "A"
    Else If chaine_dec - (chaine_dec_tmp * 16) = 11 Then
    caractere_hexa = "B"
    Else If chaine_dec - (chaine_dec_tmp * 16) = 12 Then
    caractere_hexa = "C"
    Else If chaine_dec - (chaine_dec_tmp * 16) = 13 Then
    caractere_hexa = "D"
    Else If chaine_dec - (chaine_dec_tmp * 16) = 14 Then
    caractere_hexa = "E"
    Else If chaine_dec - (chaine_dec_tmp * 16) = 15 Then
    caractere_hexa = "F"
    Else
    caractere_hexa = chaine_dec - (chaine_dec_tmp * 16)
    End If
    End If
    End If
    End If
    End If
    End If
    decimal_en_hexadecimal = caractere_hexa & decimal_en_hexadecimal
    chaine_dec = chaine_dec_tmp
    caractere_hexa = ""
    Loop
    End Function

    wscript.echo "FFFF ça fait : " & hexadecimal_en_decimal("FFFF")
    wscript.echo "65535 ça fait : " & decimal_en_hexadecimal("65535")
    10
    1. Martin T
       
      En VB il existe la fonction Hex (valeur) qui permet de convertir en chaine Hexa, malheureusement elle n'accepte pas les valeurs qui dépassent un double donc merci pour cette fonction qui me permet de m'en sortir avec élégance.
      Salutations,
      Martin T
      0
  2. flying turtle
     
    Sinon pour les fainéants pas intelligents comme moi
    pour convertir ffff en décimal par exemple moi je ferais comme ca:

    Dim str As String
    Dim i As Double
    str = "&h" & "ffff"
    i = str

    Oh miracle i=65535
    6
    1. Celestus
       
      Pardon. Tu voulais sans doute écrire

      str = "&hffff"
      CDbl(Str)

      Bien. Maintenant essaye pour un nombre > à FFFFFFEF, à savoir FFFFFF00... Que se passe-t-il ? Mmmmh ? Dépassement de capacitéééééééé !

      Tu te retrouves avec des valeurs négatives allant de -1 pour FFFFFFFF à -256 pour FFFFFF00, ce qui est très chiant quand tu extrait du registre des valeurs DWORD (le bug n'existe pas avec les QWORD tient).

      Et au-delà d'un nombre à 8 octets, c'est même pas la peine...

      Alors qu'avec ma fonction, tu peux mettre ce que tu veux.

      Alors ? Merci qui ?
      0
    2. blaise
       
      Comme je travaille par Byte, cette réponse est la meilleure pour moi !
      0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    MDRRR x100 ... c'est fort ... trop fort ...

    Un mois pour sortir une c********e ... c'est pas ce qui est demandé .... et pour info, toi qui est si intelligent, et comme c'est mon jour de bonté (aujourd'hui j'instruis les ânes ...) pour convertir de décimale en hex, la fonction hex() le fait très bien ...

    Prend des notes, je répéterai pas ... ok ...

    Pour Hexa/Bin :
    Function CONVHEXABIN(ByVal str As String) As String
    'conversion hexadecimal en binaire
    LONGUEUR = Len(str): H = 1
    While H < LONGUEUR + 1
    RES = Mid(str, H, 1)
    If RES = "0" Then RES1 = "0000"
    If RES = "1" Then RES1 = "0001"
    If RES = "2" Then RES1 = "0010"
    If RES = "3" Then RES1 = "0011"
    If RES = "4" Then RES1 = "0100"
    If RES = "5" Then RES1 = "0101"
    If RES = "6" Then RES1 = "0110"
    If RES = "7" Then RES1 = "0111"
    If RES = "8" Then RES1 = "1000"
    If RES = "9" Then RES1 = "1001"
    If RES = "A" Then RES1 = "1010"
    If RES = "B" Then RES1 = "1011"
    If RES = "C" Then RES1 = "1100"
    If RES = "D" Then RES1 = "1101"
    If RES = "E" Then RES1 = "1110"
    If RES = "F" Then RES1 = "1111"
    CONVHEXABIN =CONVHEXABIN  & RES1
    H = H + 1
    RES1 = ""
    Wend
    End Function


    Bin/DEC
    Function CONVBINDEC(ByVal Str Variant) As Variant
    'conversion binaire en décimal
    LONGUEUR = Len(str): H = 1
    HH = Val(LONGUEUR)
    RES2 = 2 ^ (LONGUEUR - 1)
    While HH > 0
    RES = Mid(str, H, 1)
    If RES = "1" Then RES1 = RES1 + RES2
    RES2 = RES2 / 2
    HH = HH - 1
    H = H + 1
    Wend
    CONVBINDEC = RES1
    End Sub


    Et comme tu es super intelligent, je te laisse trouver comment faire pour hexa/dec ...
    3
  4. Hubck
     
    Bonjour,

    je sais que c'est vieux comme sujet, mais étant donné que je viens de le trouver....
    Si ça peut servir à d'autres, je viens d'écrire ma fonction :

    Function Hex2Dec(Hexa As String) As Double
    Dim i As Integer, Multi As Integer
    Hex2Dec = 0
    Hexa = UCase(Trim(Hexa))
    If Not Hexa Like "*[G-Z]*" Then
    For i = 1 To Len(Hexa)
    Multi = CInt("&H" & (Mid(Hexa, Len(Hexa) - i + 1, 1)))
    Hex2Dec = Hex2Dec + (Multi * 16 ^ (i - 1))
    Next i
    End If
    End Function
    3
    1. 94Skarb Messages postés 1 Statut Membre
       
      Merci,

      Ca a l'avantage d'être clair et efficace !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Celestus
     
    Formidable. Merci, je sais que Hex() existe. Seulement là où on voit que tu es un noob, c'est que hex est vite dépassée lorsque l'on utilise un trop grand nombre.

    Mieux vaut utiliser

    Function convert_decimal_hexadecimal(mon_nombre_decimal)
    Hexa = ""
    Do While mon_nombre_decimal > 0
    temp = Int(mon_nombre_decimal / 16)
    If mon_nombre_decimal - (temp * 16) = 10 Then
    Hexa = "A"
    Else If mon_nombre_decimal - (temp * 16) = 11 Then
    Hexa = "B"
    Else If mon_nombre_decimal - (temp * 16) = 12 Then
    Hexa = "C"
    Else If mon_nombre_decimal - (temp * 16) = 13 Then
    Hexa = "D"
    Else If mon_nombre_decimal - (temp * 16) = 14 Then
    Hexa = "E"
    Else If mon_nombre_decimal - (temp * 16) = 15 Then
    Hexa = "F"
    Else
    Hexa = mon_nombre_decimal - (temp * 16)
    End If
    End If
    End If
    End If
    End If
    End If
    convert_decimal_hexadecimal = Hexa & convert_decimal_hexadecimal
    mon_nombre_decimal = temp
    Hexa = ""
    Loop
    End Function

    Sinon il s'agit ici de convertir du décimal en hexadécimal.

    Donc non seulement tu es un gros noob, mais en plus tu ne sais pas lire.
    1
  7. kaadooze Messages postés 3 Statut Membre
     
    Salut,

    En cherchant des solutions à mon sujet je suis tomber sur ce sujet là, en espérant que vous me venez en aide je me permet de vous soumettre mon sujet.

    dans une table Excel je doit afficher des données en décimal dans les cellules(B8 à B131) et convertir ces données en hexadécimal dans les cellules (C8 à C131) en suite en Ascii dans les cellules (D8 à D131)
    comme suite:

    Dec Cells(B8) = Hex Cells(C8) = Ascii(D8)
    .
    .
    .
    .
    .
    .
    .
    .
    Dec Cells(B131) = Hex Cells(C131) = Ascii(D8)
    0