Xya
Messages postés103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 novembre 2005 2 déc. 2003 à 13:58
Désole, j'ai oublié de dire que pour décoder d'hexa en décimal il faut signaler à VB que c'est un nombre hexa:
hexx = CLng("&H" & hexx) 'ou CInt, Cxxx...
'au lieu de:
hexx = BaseConvert(hexx, 16, 10)
'où hexx est le nombre hexa sans préfixe
gabchampagne
Messages postés216Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 5 mai 2004 2 déc. 2003 à 02:25
OK. La, je vais mieux m'expliquer. POUR CONVERTIR, on peut utiliser HEX$. ÇA, JE LE SAVAIS DÉJÀ. mais pour décoder, ÇA MARCHE PAS. Donc, je me suis dit, pourquoi ne pas juste utiliser baseconvert. En même temps, ça présenterais cette fonction.
Xya
Messages postés103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 novembre 2005 1 déc. 2003 à 21:54
Pour avoir tes valeurs hexa préfixées de % avec Hex c'est pas la fin du monde:
buf = buf & IIf(IsCarOK(AscVal), car, Format(Hex(AscVal), "%@@"))
'Remplace:
If IsCarOK(AscVal) = True Then 'Caractère Alpha-Numérique?
' buf = buf & car
' Else
' 'hexx = BaseConvert(CStr(AscVal), 10, 16) 'Il faut le convertir en Hexa (commençant par "%" (Couple de 2 caractères.Lettres de A à F ou chiffre de 0 à 9
' 'If Len(hexx) < 2 Then hexx = "0" & hexx
' 'buf = buf & "%" & hexx
' End If
Ca devient moins lisible mais c'est toujours mieux que de trimballer une fonction d'une vingtaine de lignes alors qu'on peut faire bcp plus simple. Enfin, chacun ses habitudes de codage, si tu t'y retrouve, tant mieux!
gabchampagne
Messages postés216Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 5 mai 2004 1 déc. 2003 à 18:43
1- mes valeurs hexas doivent contenir 2 caractères seulement. Pas de "&" ni de "h". Je sais que hex("quoi") retourne une valeur hexa. Je le savais bien avant que tu me le dise. Mais c'est comment convertir la valeur hexa en une valeur décimale que je ne savais pas. Je vais essayer Cint à la place.
Xya
Messages postés103Date d'inscriptionlundi 8 juillet 2002StatutMembreDernière intervention24 novembre 2005 1 déc. 2003 à 03:29
Les conversion de et vers l'hexa sont gérées par VB... Et même si le code de changement de base était révolutionaire, utiliser la fonction intégrée à VB le rendrait plus court et accessible.
Function Hex(Number)
Membre de VBA.Conversion
Renvoie une chaîne représentant la valeur hexadécimale d'un nombre
2 déc. 2003 à 13:58
hexx = CLng("&H" & hexx) 'ou CInt, Cxxx...
'au lieu de:
hexx = BaseConvert(hexx, 16, 10)
'où hexx est le nombre hexa sans préfixe
2 déc. 2003 à 02:25
1 déc. 2003 à 21:54
buf = buf & IIf(IsCarOK(AscVal), car, Format(Hex(AscVal), "%@@"))
'Remplace:
If IsCarOK(AscVal) = True Then 'Caractère Alpha-Numérique?
' buf = buf & car
' Else
' 'hexx = BaseConvert(CStr(AscVal), 10, 16) 'Il faut le convertir en Hexa (commençant par "%" (Couple de 2 caractères.Lettres de A à F ou chiffre de 0 à 9
' 'If Len(hexx) < 2 Then hexx = "0" & hexx
' 'buf = buf & "%" & hexx
' End If
Ca devient moins lisible mais c'est toujours mieux que de trimballer une fonction d'une vingtaine de lignes alors qu'on peut faire bcp plus simple. Enfin, chacun ses habitudes de codage, si tu t'y retrouve, tant mieux!
1 déc. 2003 à 18:43
1 déc. 2003 à 03:29
Function Hex(Number)
Membre de VBA.Conversion
Renvoie une chaîne représentant la valeur hexadécimale d'un nombre
Hex(255) = "&hFF"
CLng("&HFF") = 255