Premierement, les systemes numériques :
Il existe trois systemes numériques principaux...
decimale:
il existe le systeme décimale qui possede 10 unité avant de passer à l'unité supérieur...
il est utilisé par tout le monde dans le language corant,etc.. il est aussi appelé base 10
sexagesimale (je ne suis pas sur de l'orthographe...):
C'est un systeme contenant soixante unité avant de passé à la supérieur
C'est le systeme que l'on utilise pour les mesures de temps (ex: il faut soixante seconde pour passé à la minute supérieur...),
ce systeme est aussi appelé base 60.
hexadecimale :
Enfin, il y a le systeme hexadecimale, qui comprend seize unité... ce systeme est utilisé dans l'informatique
pour l'ecriture des grands nombres et aussi par certains dans les petits programmes de cryptage textuelle...
Le systeme est particulierement compliqué car il utilise aussi des lettres pour unité...
les voicis :
listing 1 (unités hexadecimales) :
1 = 1 5 = 5 9 = 9 D = 13
2 = 2 6 = 6 A = 10 E = 14
3 = 3 7 = 7 B = 11 F = 15
4 = 4 8 = 8 C = 12
voilà,
maintenant nous connaissons les unités hexadécimales, maintenant, comment convertir un decimale en hexadécimales ?
CONVERSIONS DECIMALE --> HEXADECIMALE
En VB (VBS y compris) convertir un decimale en hexadécimales est très simple car visual basic est doté d'une fonction simple...
Mais alors, pourquoi ce tutoriel ?!
Visual basic est doté d'une fonction de conversion decimale hexadecimale, mais pas le contraire !
Bizarre n'est-ce pas?
oui, c'est bête et je ne sais pas pourquoi, et c'est pour ça que tout le monde recherche cette fonction inverse...
Bon, retournons à nos moutons...Euh... NAN, ntre fonction plutôt...
Donc, cette fonction decimale --> hexadecimale, s'appelle tout simplement hex()...
voici sa syntaxe :
hex( integer ) '(integer = entier en Français...)
pour l'utiliser, rien de plus simple, on peut l'utiliser "cru" ou l'affecter à une variable...(voir listing 2)
listing 2 :
a = hex(78) 'ici on l'affecte à une variable
msgbox(a) 'et là on affiche le resultat
'ou directement :
msgbox(hex(78)) 'c'est cela que j'appelle l'utilisation "cru" de la fonction...
Et voila ! vous savez convertir un nombre decimale en un nombre hexadecimale !
Maintenant, c'est comme si vous saviez crypter un texte mais pas le décrypter...C'EST CON CA HEIN!?
Et maintenant......HEXADECIMALE --> DECIMALE
Il existe un calcul de conversion hexadecimale --> decimale (je vais vous le donner...), mais si vous avez la flemme d'appliquer ce calcul dans une fonction VB/VBS, alors je vais aussi vous la donner...
d'abord, le calcul :
soit n un chiffre hexadecimale quelconque (bien distinguer chiffres et nombres...)...
notre nombre possede, par exemple, ici, 4 chiffres différents ou non... le nombre est donc :
n n n n
1°)nous allons numéroté notre nombre hexadecimale :
n4 n3 n2 n1
2°)le calcul est donc la somme des produits de chaque n et de 16 puissance l'indice du "n" inférieur .... Compliqué? dit comme ça oui.. mais en faite le calcul peut se résumé de cette manière aussi :
on prend un n, on le multiplie par 16 puisance l'indice du n qu'il y a juste avant et on effectue cette operation avec chaque n puis on les additionnes tous ensembles...
cela se traduit donc par
n4 n3 n2 n1 = n4*163+ n3*162+ n2* 161+ n1*160
Voilà, vous savez convertir un hexadecimal en decimal !
Mais bon, commej'en connais qu'on pas envie de se faire ch*** à traduire ça dans une fonction, je vous donne celle que j'ai faite... :
listing 3 (la ameuse fonction !):
dim valeur 'declaration publique de la variable qui va contenir la valeur décimale
' renvoyé par la fonction
function dec(hexa) 'La fonction s'appelle donc dec() et requiert un argument stocqué
'dans la variable hexa...
' Cet argument est en faite le nombre hexadecimale à convertir
dim decomp_hexa(15) 'declaration du tableau qui va contenir chaque chiffre hexadecimal
nbr=len(hexa) 'la variable nbr contient le nombre de chiffre hexadecimale
'que contient le nombre hexadecimal à convertir
for a = nbr to 1 step -1 'La boucle qui va se charger de décomposer les chiffres
g=g+1
decomp_hexa(g)=mid(hexa,a,1) 'decomposition de chaque chiffres grace à mid()...
'ces chiffres sont stocqués de droite à gauche grace
' à la décrémentation de la boucle
select case decomp_hexa(g) 'on convertis quand meme les lettres (chiffres hexadecimal) pour le calcul
case "A"
decomp_hexa(g)=10
case "a"
decomp_hexa(g)=10
case "B"
decomp_hexa(g)=11
case "b"
decomp_hexa(g)=11
case "C"
decomp_hexa(g)=12
case "c"
decomp_hexa(g)=12
case "D"
decomp_hexa(g)=13
case "d"
decomp_hexa(g)=13
case "E"
decomp_hexa(g)=14
case "e"
decomp_hexa(g)=14
case "F"
decomp_hexa(g)=15
case "f"
decomp_hexa(g)=15
end select
next
for b = 1 to nbr 'voici la boucle du calcul
calcul=decomp_hexa(b)*16^(b-1) 'on effectue les produits
c=c+calcul 'on les additionne
next
valeur = c 'on stocque le tout dans la variable valeur
end function
Voila, c'est bien beau, mais comment utilisé cette fonction, meme si on débute et on à rien compris....?
Eh ben on fait copié, collé au début de son code et ensuite, une fois que cette fonction à été collé au début du script l'utilisant, voici comment on l'utilise :
listing 4 (l'utilisation de la fameuse fonction...):
'ici le code copié/collé de la fonction
dec("F6EBA") 'on est pas obligé de mettre des majuscules....
msgbox(valeur)
'JE RAPPELLE QUE LE RESULTAT EST STOCQUE DANS LA VARIABLE VALEUR,
'IL EST DONC IMPOSSIBLE D'ECRIRE CECI :
'decimale = dec("FEB15")
'CAR LE RESULTAT EST STOCQUE DANS UNE VARIABLE CAR C'EST UNE FONCTION "FAITE MAISON"
'ET QU'ELLE NE PEUT DONC PAS RENVOYER DE VALEUR MAIS UNE VARIABLE
'il faut donc ecrire :
dec("FEB15")
decimale = valeur
msgbox(valeur)
VOILA ! vous savez maintenant tout sur cette fabuleuse conversion !
tout!? ah, non! j'oublie une fonction plus simple mais qui prend plus de temps à etre exploiter... c'est aussi une fonction de conversion d'hexadecimale en decimale mais sauf qu'au lieu d'effectuer le calcul qui marche avec des hexadecimale de n'importe quel taille, elle vérifie chaque possibilité en partant de 1 jusqu'à ce qu'elle trouve hex()...
c'est simple mais efficace (rapide quoi...) :
listing 5 (c'est tout bonus !) :
dim valeur 'la c'est pareil qu'en haut
function dec(hexa) 'ici aussi
a = 1 'on initialise a à 1
do until hexa=hex(a) 'effectuer la boucle tant que la conversion de a en hexadecimale soit égale
' à l'argument (hexadecimale) donné (hexa)...
a = a+1 'on incrémente a de 1 à chaque execution
loop
valeur = a 'valeur = la derniere fois que a a été incrémenté
'(la fois ou hex(a) est égale à l'argument)
end function 'the end
alors là c'est pareil pour l'exploitation de la fonction...
VOILA !
je vous ai transmis tout mon savoirsur cette fameuse conversion !
FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN FIN
MERCI A TOUS JE VOUS AIME !
lol
;)
i am
you were...