Module pour manipulation et conversions des bits

Soyez le premier à donner votre avis sur cette source.

Vue 6 590 fois - Téléchargée 245 fois

Description

Cette module contient des fonctions prés à utiliser dans vos programmes,le module contient les fonctions suivants :

SHL(x As Byte, i As Integer) As Byte

SHR(y As Byte, k As Integer) As Byte

Dec2Hex(dec As Long) As String

Hex2Dec(hex As String) As Long

Hex2Bin(hex As String) As String

Bin2Dec(bin As String) As String

Source / Exemple :


Function SHL(x As Byte, i As Integer) As Byte  ' shl(octet ,nombre de décalage)
SHL = ((x * 2 ^ i) And 255)
End Function

Function SHR(y As Byte, k As Integer) As Byte  ' shr(octet ,nombre de décalage)
SHR = CByte(Int(y / (2 ^ k)))
End Function

Function Dec2Hex(dec As Long) As String
Dec2Hex = hex(dec)
End Function

Function Hex2Dec(hex As String) As Long
Hex2Dec = Val("&h" & hex)
End Function
Function Hex2Bin(hex As String) As String
Dim i As Byte
Dim resultat As String
For i = 1 To Len(hex)
Select Case Mid(hex, i, 1)
Case "0": resultat = resultat & "0000"
Case "1": resultat = resultat & "0001"
Case "2": resultat = resultat & "0010"
Case "3": resultat = resultat & "0011"
Case "4": resultat = resultat & "0100"
Case "5": resultat = resultat & "0101"
Case "6": resultat = resultat & "0110"
Case "7": resultat = resultat & "0111"
Case "8": resultat = resultat & "1000"
Case "9": resultat = resultat & "1001"
Case "A": resultat = resultat & "1010"
Case "B": resultat = resultat & "1011"
Case "C": resultat = resultat & "1100"
Case "D": resultat = resultat & "1101"
Case "E": resultat = resultat & "1110"
Case "F": resultat = resultat & "1111"
End Select
Next i
Hex2Bin = resultat
End Function
Function Bin2Dec(bin As String) As String
Dim i As Byte
Dim resultat As Long
resultat = 0
For i = 1 To Len(bin)
If Mid(bin, Len(bin) - i + 1, 1) = 1 Then
resultat = resultat + 2 ^ (i - 1)
End If
Next i
Bin2Dec = resultat
End Function

Conclusion :


A la suite de proposition de oli6530 voici la version final de ce Module .

Amicalement
Chalandi Amine

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
OK mais dans tous les cas c'est totalement contre productif alors que les manipulations de bits s'envisagent d'ordinaire dans du calcul, on y attend de la vitesse.
Soit faut l'implémenter dans VB en ASM par une tlb, voir sources de Ebartsoft.
Soit moins compliqué, tu te fais une DLL native qui te fera tout cela en qlqs cycles.
Messages postés
2
Date d'inscription
samedi 11 février 2006
Statut
Membre
Dernière intervention
1 février 2008

Merci RENFIELD
le passage en string dans shl est pour evité la dépassement de la capacité de la type byte.
car le la valeur maximun d'un byte est 255 , et si j'ai 255 qui est FF en hexa et je veux le décalé par un ( donc 2*255) on va dépassé la capacité,donc pour cette raison j'ai changé le type en string .

Amicalement
Chalandi Amine
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
a optimiser....

ah, et j'ai pas compris le pasage en String dans SHL

xx = CStr(x) 'Conversion de x en string
For n = 1 To i
xx = xx * 2 ' décalage de xx
Next
xx = xx Mod 256 ' metre XX sur un octet
SHL = CByte(xx) '

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.