begin process at 2012 02 09 02:39:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > MODULE POUR MANIPULATION ET CONVERSIONS DES BITS

MODULE POUR MANIPULATION ET CONVERSIONS DES BITS


 Information sur la source

Note :
Aucune note
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é :4 989 / 171

Auteur : chalandi

Ecrire un message privé
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

Les Membres Club peuvent 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

 Sources du même auteur

Source avec Zip Source avec une capture COMMANDE D'UNE CARTE D'INTERFACE PARALLELE À BASE D'UN PPI 8...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture COULCOD 4.2 _COULEURS - VALEURS -NUANCES par Sechaud
Source avec Zip Source avec une capture Source .NET (Dotnet) BITWISE OPERATION IN VB.NET par gpanario1
Source avec Zip Source avec une capture MANIPULATION FICHIER EXECUTABLE par mbodjsystem
Source avec Zip CRÉATION D'UN FICHIER À PARTIR DE PLUSIEURS FICHIER (POUR É... par aloneinthedark
Source avec Zip Source .NET (Dotnet) CLASSE READ/WRITE BIT À BIT DANS UN FICHIER À N'IMPORTE QUEL... par yvesyves

Commentaires et avis

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

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

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales