CONVERSION BYTE <=> STRING <=> HEXA <=> DECIMAL...

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 23 déc. 2004 à 03:03
Galactus13 Messages postés 335 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 16 août 2023 - 18 oct. 2009 à 18:51
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/28355-conversion-byte-string-hexa-decimal

Galactus13 Messages postés 335 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 16 août 2023 1
18 oct. 2009 à 18:51
-1 ou +1 ou rien ?
Que La bataille commence ! :)
ssauvage Messages postés 47 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 9 octobre 2012
29 juil. 2008 à 12:17
Pour répondre à "sourismerdique":
Ubound retourne la borne supérieure du tableau (et non sa taille).
Il ne faut donc pas mettre le "-1" ...
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
19 juin 2006 à 14:27
ca compile pas..... il manque des déclarations de variables & cie :(
sourismerdique Messages postés 19 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 21 janvier 2010
23 mars 2006 à 16:45
Attention petite erreur a la fonction bytetohex()

Public Function bytetohex(buffer() As Byte) As String
bytetohex = vbNullString
For I = 0 To UBound(buffer) - 1 'Il faut ajouter le - 1 sinon la fonct ajoute un
'zero en fin de chaine!
bytetohex = bytetohex & Hex(buffer(I))
Next I
End Function

Merci pour le coup de main, joli resumé de fonctions! a+
cs_zifnig Messages postés 16 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 28 mai 2007
24 déc. 2004 à 14:48
Pour une conversion octet par octet, une méthode permet d'optimiser la conversion (utile pour de gros volumes) :

voir mon code sous :

http://www.vbfrance.com/code.aspx?ID=28389
retaks666 Messages postés 286 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 juillet 2007
23 déc. 2004 à 12:57
Merci, bon a savoir aussi ;)
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 déc. 2004 à 03:03
Salut retaks666
Oui, c'est la solution la plus évidente.
Une autre méthode, beaucoup plus rapide lorsque les quantités de données sont importantes, est la siuvante. Elle utilise une API qui permet de faire une copie de l'emplacement mémoire d'une variable vers l'emplacement de la seconde variable.
Il faut donc (et obligatoirement) que les variables soient dimensionnées avant d'être utilisées.

- Dans la partie déclaration de ta form ou ton module :
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
pDst As Any, _
pSrc As Any, _
ByVal ByteLen As Long)

- La fonction de convertion String to Bytes :
Public Function maStringToBytes(ByVal sSource As String, _
ByRef bTablo() As Byte)
Dim r As Long, sDesti() As Byte
r = Len(sSource) ' Longueur des données
CopyMemory ByVal sDesti, ByVal sSource, r ' Transfert
bTablo = sDesti ' Renvoi l'info
End Function

- La fonction de convertion Bytes to String :
Public Function maBytesToString(ByRef bTablo() As Byte) As String
Dim r As Long, sDesti As String
r = UBound(bTablo) - LBound(bTablo) ' Longueur des données
CopyMemory ByVal sDesti, ByVal bTablo, r ' Transfert
maBytesToString = sDesti ' Renvoi l'info
End Function

Vala
Rejoignez-nous