CONVERTIR UN OCTET EN 8 BITS (10011101) BYTESTOBITS

Signaler
Messages postés
2376
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
cs_yvesyves
Messages postés
562
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41532-convertir-un-octet-en-8-bits-10011101-bytestobits

cs_yvesyves
Messages postés
562
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010

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.
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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
Sirocooo
Messages postés
412
Date d'inscription
mercredi 19 décembre 2001
Statut
Membre
Dernière intervention
7 avril 2008
1
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
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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.
draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010

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