Posez votre question Signaler

Conversion hex/dec en vb

kamel_bxz 7Messages postés 27 janvier 2008Date d'inscription - Dernière réponse le 18 janv. 2012 à 11:55
Bonjour,
je veux deux fonction de conversion en VB6
-conversion hexa/dec
-conversion hexa/bin
merci
Lire la suite 

Conversion hex/dec en vb »

12 réponses
Réponse
+7
moins plus
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")
Martin T - 7 juil. 2011 à 19:34
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
Ajouter un commentaire
Réponse
+2
moins plus
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 ...
Ajouter un commentaire
Réponse
+1
moins plus
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
Celestus - 14 nov. 2009 à 02:33
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 ?
Ajouter un commentaire
Réponse
+1
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
la boucle est bouclée ;o))
Ajouter un commentaire
Réponse
-2
moins plus
google est ton ami ... demande lui donc
Ouneufe - 14 mai 2008 à 14:36
Google renvoie à ta réponse surfaite, Pollux.
vv - 18 nov. 2010 à 16:19
polux31 épargne nous tes réponses à la con
loran - 20 janv. 2011 à 10:15
Super, ça nous aide des réponses comme celles-ci...
En cherchant via google justement, je tombe très souvent sur des posts avec comme seule réponse "google est ton ami"...
Ajouter un commentaire
Ce document intitulé « conversion hex/dec en vb » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook