Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MODULE POUR MANIPULATION ET CONVERSIONS DES BITS


Information sur la source

Catégorie :Trucs & Astuces Classé sous : SHL, SHR, conversions, manipulation, bits Niveau : Débutant Date de création : 01/02/2008 Date de mise à jour : 02/02/2008 15:01:50 Vu / téléchargé: 3 512 / 131

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

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

  • 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
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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

02 février 2008 15:01:51 :
Pour des raison de rapidité , j'ai modifié les deux fonction shl et shr à la suite de proposition de oli6530

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 01/02/2008 16:48:48 administrateur CS

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) '

signaler à un administrateur
Commentaire de chalandi le 01/02/2008 19:17:09

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

signaler à un administrateur
Commentaire de BruNews le 01/02/2008 20:22:03 administrateur CS

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.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

manipulation des bits [ par willy6 ] j'aimerais savoir à quoi correspondent XOR,OR et AND (pour la manipulation de bits) en VB.c'est pour implementer une méthode de cryptage Manipulation de Winamp [ par seblutfr ] Bonjour,Deux petits problèmes à propos du pilotage de Winamp.J'utilise actuellement la ligne de commande et les messages WM_COMMAND pour piloter Winam Clé de x bits [ par Frelon ] Bonjour n'ayant pas accès au chat, j'utilise ce biais pour avoir une réponse à la question suivante. Qu'est-ce qu'une clé à par exemple 256 bits. Je s Manipulation de données avec des objets graphiques [ par faselsa ] Bonjour,J'aimerais modéliser une planification de ligne de production avec ACCESS 97.Les objets graphiques représentent des actions qui ont une certai comment inverser les bits recu sur com1?? [ par gan ] Sur le port série je recois 111110 (ascii de ">"), et je voudrais inverser les bits et recevoir 000001 ("1").Y a t il une fction qui permet de fa Besoin d'aide sur la manipulation de process [ par PurpleSkunk ] Bonjour !J'ai besoin d'aide sur un problème de process pour un projet professionnel en cours.Je précise que tout doit se dérouler à travers une sessio manipulation de grand nombre [ par pop49 ] Bonjour, Au-delà de 99999... (15 fois le chiffre 9), un nombre (pourtant défini de type Double) est systématiquement tronqué par VB 6 et noté en écri manipulation de fichier txt [ par xphilippe ] bonjour a tous,j'ai un pb, qui doit etre tout bete, mais dont je ne trouve pas de solution.depuis les macros Excel VBA, je souhaite - ouvrir un fichie manipulation de grand nombres [ par pop49 ] Bonjour, Au-delà de 99999... (15 fois le chiffre 9), un nombre (pourtant défini de type Double) est systématiquement tronqué par VB 6 et noté en écrit convertir ces deux lignes en vb6 [ par eikonos ] Quelqu'un pourrez me convertir ces deux lignes en vb6Mercitypedef int (*PS_VD_CALLBACK)(void);#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.