CHAR VERS HEXA

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 29 sept. 2004 à 07:03
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 - 14 oct. 2004 à 01:16
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/26463-char-vers-hexa

cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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)...)
Rejoignez-nous