Convertir un octet en 8 bits (10011101) bytestobits

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 280 fois - Téléchargée 23 fois

Contenu du snippet

Ceci est une petite fonction qui peut être très utile.
Elle permet de convertir un Octet (Byte) en un tableau Boolean (True ou False donc 1 ou 0 [True = -1])
J'utilise pour celà les opérations sur les bits et les décalages.

Source / Exemple :


Public Function ByteToBits(ByVal Octet As Byte) As Boolean()
        Dim TblBits(7) As Boolean 'Tableau de bits (Boolean)
        Dim ByteOperation As Byte = 128 'On commence avec 10000000
        Dim Bit As Byte 'On stocke un bit dans une valeur Byte de 8 octets

        For Iteration As Integer = 0 To 7 'Boucle
            Bit = Octet And ByteOperation 'On effectue l'opération And pour ne récupérer qu'un 1 ou 0 car ByteOperation ne contient qu'un bit à 1 donc le retour sera soit 0 soit une serie de 0 avec un 1.
            Bit >>= (7 - Iteration) 'On décale les bits pour que notre valeur soit la plus à droite ainsi on aura une valeur Byte de 1 ou de 0
            ByteOperation >>= 1 'On décale le bit 1 d'opération And d'abord placé à 10000000 puis 01000000 ouis 00100000 etc
            TblBits(Iteration) = CBool(-Bit) '-1 pour Trye et 0 pour False 'On convertit la valeur en Boolean c'est à dire si Bit = 1 alors il sera égale à -1 et si Bit = 0 alors il sera égale à 0 ;)
        Next
'C'est fini
  Return TblBits 'On renvoit
    End Function

A voir également

Ajouter un commentaire

Commentaires

cs_Willi
Messages postés
2377
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
16 -
Utile et court => pensez codyx.org.
cs_Galain
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6 -
Si c'est du niveau initié c'est quoi le niveau débutant
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
C'est quoi le but ?

for i = 0 to 7
if octet And 1 Then TblBits(i) = True
Else TblBits(i) = False
End if
octet >>= 1
next

Ne ferait pas idem en plus court ?
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
Autre chose, le titre est totalement faux, un octet EST 8 bits mais un tableau Boolean ou autre ne sera jamais 'bit'.
Affecter -1 à un bit n'aurait aucun sens, un nbr est vu comme négatif si son bit de poids fort est psotionné, il est donc clair qu'un bit seul n'est ni négatif ni positif, seulement 0 ou <> 0.

Je persiste à croire que toucher aux interprétés avant d'avoir étudié ASM et C est une pure calamité.
Sirocooo
Messages postés
412
Date d'inscription
mercredi 19 décembre 2001
Statut
Membre
Dernière intervention
7 avril 2008
1 -
il y a infiniement plus simple :

System.Convert.ToInt64(Valeur, FromBase), ToBase

Valeur = nombre à convertir
FromBase = 10
ToBase = 2
Cela renvoi un string

On peut ansi passer de n'importe quelle base vers une autre

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.