CONVERTIR UNE CHAÎNE AVEC DES CARACTÈRES SPÉCIAUX EN UNE CHÂNE ALPHA-NUMÉRIQUE

Signaler
Messages postés
103
Date d'inscription
lundi 8 juillet 2002
Statut
Membre
Dernière intervention
24 novembre 2005
-
Xya
Messages postés
103
Date d'inscription
lundi 8 juillet 2002
Statut
Membre
Dernière intervention
24 novembre 2005
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18319-convertir-une-chaine-avec-des-caracteres-speciaux-en-une-chane-alpha-numerique

Xya
Messages postés
103
Date d'inscription
lundi 8 juillet 2002
Statut
Membre
Dernière intervention
24 novembre 2005

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

Hex(255) = "&hFF"
CLng("&HFF") = 255
gabchampagne
Messages postés
216
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
5 mai 2004

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és
103
Date d'inscription
lundi 8 juillet 2002
Statut
Membre
Dernière intervention
24 novembre 2005

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és
216
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
5 mai 2004

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és
103
Date d'inscription
lundi 8 juillet 2002
Statut
Membre
Dernière intervention
24 novembre 2005

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