Conversion byte <=> string <=> hexa <=> decimal...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 36 427 fois - Téléchargée 36 fois

Contenu du snippet

Voicis quelques fonctions de conversion bien pratiques, la fonction hextodec n'est pas de moi, mais je ne trouve plus l'auteur. Merci a lui

Source / Exemple :


Function stringtobyte(ByVal str As String, data() As Byte)
ReDim data(Len(str))
For i = 1 To Len(str)
data(i - 1) = Asc(Mid(str, i, 1))
Next i
End Function

Public Function ByteToString(ByRef bInput() As Byte) As String
Dim i As Long

ByteToString = ""
i = 0

Do While i < UBound(bInput) + 1
ByteToString = ByteToString + Chr$(bInput(i))
i = i + 1
Loop

End Function

Function stringtohex(ByVal str As String) As String
ReDim data(Len(str))
For i = 1 To Len(str)
stringtohex = stringtohex & Hex(Asc(Mid(str, i, 1)))
Next i
End Function

Public Function hexToString(ByRef str As String) As String
Dim i As Long
hexToString = ""
i = 1
Do While i < Len(str)
hexToString = hexToString & Chr$(Hextodec(Val(Mid(str, i, 2))))
i = i + 2
Loop

End Function

Public Function Hextodec(ByVal Nombre As String)
    CoeffMulti = 1
    Operation = 0
    
    For x = Len(Nombre) To 1 Step -1
        Select Case UCase(Mid(Nombre, x, 1))
            Case "A"
                Number = 10
            Case "B"
                Number = 11
            Case "C"
                Number = 12
            Case "D"
                Number = 13
            Case "E"
                Number = 14
            Case "F"
                Number = 15
            Case Else
                If Asc(Mid(Nombre, x, 1)) > 47 And Asc(Mid(Nombre, x, 1)) < 58 Then
                    Number = Mid(Nombre, x, 1)
                Else
                    Exit Function
                End If
        End Select
        
        Number = Number * CoeffMulti
        Operation = Operation + Number
        CoeffMulti = CoeffMulti * 16
    Next x
    
    Hextodec = Operation
End Function

Public Function bytetohex(buffer() As Byte) As String
bytetohex = vbNullString
For i = 0 To UBound(buffer)
bytetohex = bytetohex & Hex(buffer(i))
Next i
End Function

Public Function hextobyte(ByVal str As String, buffer() As Byte)
Dim i As Long
ReDim buffer(Len(str))
hextobyte = vbNullString
i = 1
a = 0
Do While i < UBound(buffer)
buffer(a) = Hextodec(Val(Mid(str, i, 2)))
i = i + 2
a = a + 1
Loop
End Function

Conclusion :


pour stringtobyte, appelez la avec call stringtobyte...

A voir également

Ajouter un commentaire

Commentaires

Galactus13
Messages postés
328
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
2 décembre 2019
1 -
-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
-
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
728
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
-
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
-
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
-
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.