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

Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005 - 1 déc. 2003 à 03:29
Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005 - 2 déc. 2003 à 13:58
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
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és 216 Date d'inscription mercredi 2 avril 2003 Statut Membre Derniè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és 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 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és 216 Date d'inscription mercredi 2 avril 2003 Statut Membre Derniè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és 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 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

Hex(255) = "&hFF"
CLng("&HFF") = 255