cs_MasterHack
Messages postés586Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention13 février 20082 14 oct. 2004 à 01:16
Le but de cette source est seulement pour donner la base de la conversion Hexadecimale, sinon j'utiliserai Hex avec Asc tout simplement.
Merci Renfield
j'ai utilser do loop pour ceux qui veulent convertir les nombre en hexa , car pour un nombre de 10000 on vas refaire l'operation , donc cette source peut changer de (char vers hexa) à (num vers hexa) facilement. vous voyez.
mais la je vous remerci car dans cette source il y a deux sources en realite
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 sept. 2004 à 12:56
judicieuse remarque de Gobillot : les caractères ne vont que jusqu'a 255, pas besoin de faire cette gestion des nombres plus importants...
ton code nettoyé donnerait par exemple :
Option Explicit
'# La Table est stockée une fois pour toute
Dim Table As Variant
Private Sub Form_Load()
'# Remplissage de la table
Let Table = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
End Sub
'# Le parametre optionnel Separator permet de définir une chaine de séparation entre les caractères
'# La fonction renvoies un String
Function Hexa(Texte As String, Optional Separator As String = "") As String
'# On définit toutes nos variables !
Dim i As Integer
Dim code As Integer
'# On ne souhaite pas recalculer les longueur des chaines
Dim L As Integer: L = Len(Texte)
Dim S As Integer: S = Len(Separator)
'# On reserve une chaine de caractère de longueur suffisante
Hexa = Space$(2 * L + (L - 1) * S)
For i = 1 To L
code = AscW(Mid$(Texte, i, 1))
'# On remplace certains morceau de la chaine hexa (on n'alloue plus d'espace supplémentaire pour chaque caractère)
Mid$(Hexa, 1 + ((i - 1) * (L + S)), 3) = Table(code \ 16) & Table(code And 15) & Separator
Next i
End Function
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 29 sept. 2004 à 09:56
pour avoir le code hexa d'un caratère, sans passer par la fonction Hex$, il te suffisait de faire ça:
Dim code As Integer
. . . . . . . . . .
code = Asc(Mid$(Texte, i, 1))
Hexa = Hexa & Table(code \ 16) & Table(code And 15)
. . . . . . . . . .
et ta boucle Do ... Loop elle sert à rien
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 sept. 2004 à 07:03
Pourquoi ne pas utiliser Hex ?
de plus, tu devrais declarer tes variables, ce qui accelererais un peu ta fonction (Variant + int(q)...)
14 oct. 2004 à 01:16
Merci Renfield
j'ai utilser do loop pour ceux qui veulent convertir les nombre en hexa , car pour un nombre de 10000 on vas refaire l'operation , donc cette source peut changer de (char vers hexa) à (num vers hexa) facilement. vous voyez.
mais la je vous remerci car dans cette source il y a deux sources en realite
29 sept. 2004 à 12:56
ton code nettoyé donnerait par exemple :
Option Explicit
'# La Table est stockée une fois pour toute
Dim Table As Variant
Private Sub Form_Load()
'# Remplissage de la table
Let Table = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
End Sub
'# Le parametre optionnel Separator permet de définir une chaine de séparation entre les caractères
'# La fonction renvoies un String
Function Hexa(Texte As String, Optional Separator As String = "") As String
'# On définit toutes nos variables !
Dim i As Integer
Dim code As Integer
'# On ne souhaite pas recalculer les longueur des chaines
Dim L As Integer: L = Len(Texte)
Dim S As Integer: S = Len(Separator)
'# On reserve une chaine de caractère de longueur suffisante
Hexa = Space$(2 * L + (L - 1) * S)
For i = 1 To L
code = AscW(Mid$(Texte, i, 1))
'# On remplace certains morceau de la chaine hexa (on n'alloue plus d'espace supplémentaire pour chaque caractère)
Mid$(Hexa, 1 + ((i - 1) * (L + S)), 3) = Table(code \ 16) & Table(code And 15) & Separator
Next i
End Function
29 sept. 2004 à 09:56
Dim code As Integer
. . . . . . . . . .
code = Asc(Mid$(Texte, i, 1))
Hexa = Hexa & Table(code \ 16) & Table(code And 15)
. . . . . . . . . .
et ta boucle Do ... Loop elle sert à rien
29 sept. 2004 à 07:03
de plus, tu devrais declarer tes variables, ce qui accelererais un peu ta fonction (Variant + int(q)...)