begin process at 2012 02 17 04:00:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CONVERTIR UN OCTET EN 8 BITS (10011101) BYTESTOBITS

CONVERTIR UN OCTET EN 8 BITS (10011101) BYTESTOBITS


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Source .NET ( DotNet ) Classé sous :byte, octet, bit, bits, tableau Niveau :Initié Date de création :18/02/2007 Date de mise à jour :18/02/2007 20:51:11 Vu :19 494

Auteur : yvesyves

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note


 Description

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

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



 Historique

18 février 2007 20:51:11 :
J'ai oublié le Return lol

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) SERVEUR HTTP (FICHIERS/WEB) PARTAGEZ VOS FICHIERS
Source avec Zip Source avec une capture Source .NET (Dotnet) TRANSFERT DE FICHIERS ENTRE 2 PC DISTANTS
Source avec Zip Source avec une capture Source .NET (Dotnet) INCLURE POCHETTE D'ALBUM / JAQUETTE DANS VOS TAG MP3 - EDITI...
Source avec Zip Source avec une capture Source .NET (Dotnet) REDIMENSIONNEMENT DE PHOTOS PAR LOT
Source avec Zip Source .NET (Dotnet) CLASSE READ/WRITE BIT À BIT DANS UN FICHIER À N'IMPORTE QUEL...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip CALCUL DE CRC16 par Galain
Source avec Zip Source .NET (Dotnet) CLASSE READ/WRITE BIT À BIT DANS UN FICHIER À N'IMPORTE QUEL... par yvesyves
Source .NET (Dotnet) COMPRESSION par amine_hassini
API :CONVERTIR DES OCTETS EN KO,MO,GO EN FONCTION DE LA VALE... par MasterHack
RÉCUPÉRER LA TAILLE D'UN FICHIER À LA FAÇON DE L'EXPLORATEUR... par tcedi

Commentaires et avis

Commentaire de Willi le 18/02/2007 22:24:13 administrateur CS

Utile et court => pensez codyx.org.

Commentaire de Galain le 18/02/2007 23:58:40

Si c'est du niveau initié c'est quoi le niveau débutant

Commentaire de BruNews le 19/02/2007 01:07:00 administrateur CS

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 ?

Commentaire de BruNews le 19/02/2007 01:13:04 administrateur CS

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

Commentaire de Sirocooo le 19/02/2007 09:33:03

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

Commentaire de yvesyves le 19/02/2007 17:28:13

-1 est par définition la valeur de True mais elle peut prendre toutes les valeurs possible tant qu'elle ne sera pas égale à 0. Un bit à deux états pourquoi pas prendre le type Boolean? C'est mieux qu'un string qui prend de la mémoire 1 octet par caractère. On peut mieux travailler avec un tableau. C'est vrai qu'il y a plus rapide.

Commentaire de draluorg le 19/02/2007 17:41:46

Ou encore plus court :P

For i = 0 To 7
  TblBits(i) = Octet And 1
  Octet >>= 1
Next i

Commentaire de Sirocooo le 19/02/2007 17:44:42

Encore plus court, une seule ligne :

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

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

Commentaire de draluorg le 19/02/2007 17:47:12

mwai a condition d'avoir importer la classe system, pas formcement le cas dans toutes les appli...

Ici le but est de faire une fonction qui converti et non pas d'appeler un fonction qui le fait...

Commentaire de Sirocooo le 19/02/2007 17:49:28

mais pourquoi réinventer la poudre ?
Avant de faire une méthode, il faudrait regarder si
elle n'existe pas déjà dans le framework !

Commentaire de draluorg le 19/02/2007 17:51:52

je crois que ma premiere phrase dans mon dernier message répond a ta question!

Commentaire de BruNews le 19/02/2007 17:54:51 administrateur CS

String 1 octet par caractère, ça c'est pour char* en natif C ou ASM.
Pour vous c'est BSTR, 1 pointeur d'adresse (4 octets), 1 pointeur sur les données (4 octets), les donnéees à l'adresse (x octets), champ LEN, etc...
La lenteur n'est pas due au hasard.

Commentaire de Sirocooo le 19/02/2007 17:56:14

Cela peut aider :

pour savoir si un bit est à 0 ou à 1
car je pense que c'est le but recherché de yvesyves

Return (OctetATest And (2 ^ (Position - 1))) = 2 ^ (Position - 1)

OctetATest = le nombre décimal
Position = bit à tester

Commentaire de BruNews le 19/02/2007 18:03:15 administrateur CS

Si 'Position' est le résultat d'un calcul donc dans une variable, tu vas amuser le cpu pour rien avec tous ces traitements.

a = OctetATes >> Position
If a And 1 Then POSITIONNE

Commentaire de yvesyves le 19/02/2007 19:44:38

Public Function ByteToBits(ByVal Octet As Byte) As Boolean()
  Dim TblBits(7) As Boolean 'Tableau de bits (Boolean)

        For Iteration As Integer = 0 To 7 'Boucle
            TblBits(Iteration) = Octet And 1
           Octet >>= 1
        Next

  Return TblBits 'On renvoit
End Function

Voici donc le code le plus court de Draluorg. Merci a vous d'avoir optimiser mon code.

Oulà, je ne savais pas qu'il fallait tant d'octet pour codée une valeur String en .NET. Si j'ai bien compris vaut mieux travailler avec un tableau de Chars ou Bytes si on veut de la performence en recodant les fonction tel que Mid() Left() Instr() les comparaisons.

Non je ne voulais pas tester un Bit mais bien transformer tout l'octet en une suite de Bits que l'on peut manipuler après. Ce que je trouve sympa c'est qu'après on peut faire des fonctions pour transformer en x Bits. Si j'ai fais cette fonction c'est surtout pour les I/O sur les fichiers.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Recupere bit par bit les données d'1 octet [ par Falbala ] BonjourJ'ai un gros pb... Je récupère un octet et je dois tester chaque bit car ils correspondent chacun à un flag.Par exemple:1 0 0 0 1 0 0 1 RS232 [ par FloZix ] bonjour,J'ai besoin de communiquer avec le port série (RS232) et je ne sais pas comment m'y prendre. Je vous explique ce que je veux faire :J'ai circu .NET : Stocker un tableau de tableau de Byte dans un fichier [ par Scurio ] SalutEst-ce que quelqu'un à une idée pour stocker de façon simple un tableau de tableau de Byte dans un fichier pour pouvoir le récupérer par la suite Transtypage : Byte() ---> String [ par jockos ] Bonjour,Existe t-il une fontion VB toute faite qui permette de TRANSTYPER un tableau dynamique Binaire (Byte()) en une chaine de caractères (String).E Passage d'un tableau de byte à une fonction encapsulé dans un ACtiveX Dll [ par novik ] J'aimerai pouvoir passer un tableau de Byte a ma fonction (Activex Dll)lors de l'appel j'ai une erreur Type Mismatch.Or lorsque j'appelle cette foncti Lire un fichier Bits par Bits et Non octets Par octet [ par greg13 ] Je me demande comment je peux faire pour lire tout les bits d'un fichier(Ex : 01001011 ...)MerciGreg VB.NET+SQL SERVER+IMAGE [ par crilun ] crilunBonjour,J'ai une petit soucis en VB.NET,je dois a partir d'un champ contenant le chemin d'une photo inserer dans un un autre champ cette photo s convertir un tableau de byte [ par billy21121 ] Bonjour a tous, J'ai une question qui pourrait sembler c.... mais je voudrais savoir comment convertir un tableau de byte en tableau de string en vb.n bits de registres [ par vecchio56 ] Salut,Je cherche le moyen le plus rapide de-connaitre le bit numero n d'un registre-mettre à b le bit numero n d'un registre(Ou si c'est possible mett SetDIBits [ par dhylde ] Salut, J'ai juste une petite question, selon MSDN le param&#232;tre " CONST VOID *lpvBits, // array of bitmap bits" de&nbsp; SetDIBits est un un


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 : 1,997 sec (4)

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