OVH Cloud OVH Cloud

Lecture/écriture bit à bit

6 réponses
Avatar
Guillaume
Bonjour =E0 tous,

auriez-vous connaissance d'une petit biblioth=E8que permettant la
lecture/=E9criture bit =E0 bit? Par exemple, =E9crire tel nombre avec 3
bits, puis un autre avec 11 bits, etc.

Merci.

- Guillaume -

6 réponses

Avatar
Mickaël Wolff
Guillaume a écrit :
auriez-vous connaissance d'une petit bibliothèque permettant la
lecture/écriture bit à bit? Par exemple, écrire tel nombre avec 3
bits, puis un autre avec 11 bits, etc.



std::bitset ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
MGN
auriez-vous connaissance d'une petit bibliothèque permettant la
lecture/écriture bit à bit? Par exemple, écrire tel nombre avec 3
bits, puis un autre avec 11 bits, etc.



std::bitset ?


AMHA, tu ne peux pas lire/écrire bit à bit, au minimum un char...
mais je ne suis pas sûr de bien comprendre ta question.
Avatar
Mickaël Wolff
MGN a écrit :

AMHA, tu ne peux pas lire/écrire bit à bit, au minimum un char...
mais je ne suis pas sûr de bien comprendre ta question.



Avant de dire des conneries, tu pourrais comprendre la question et
lire la documentation concernant ma réponse ? À mon avis, il veut
quelque chose dans ce goût là :

=== 8< ==
#include <iostream>
#include <bitset>
#include <string>

int main()
{
typedef std::bitset<10> my_bitset ;
using std::cout ;
using std::endl ;
using std::string ;

my_bitset mask(string("0011001100")) ;
my_bitset value(string("1111111111")) ;
my_bitset masked(0) ;
masked = value & mask ;

cout << "Mask: " << mask.to_string() << endl ;
cout << "Value: " << value.to_string() << endl ;
cout << "Masked value: " << masked.to_string() << endl ;

mask.set(5, true) ; // je pense que c'est ça qu'il veut
masked = value & mask ;
cout << "Masked value: " << masked.to_string() << endl ;
}
=== >8 ==
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
MGN
Avant de dire des conneries, tu pourrais comprendre la question et
lire la documentation concernant ma réponse ? À mon avis, il veut quelque
chose dans ce goût là :


merci pour ton amabilité naturelle...
Avatar
Michael Doubez
On 21 avr, 23:21, Mickaël Wolff wrote:
MGN a crit :

> AMHA, tu ne peux pas lire/ crire bit bit, au minimum un char...
> mais je ne suis pas s r de bien comprendre ta question.

   Avant de dire des conneries, tu pourrais comprendre la question et
lire la documentation concernant ma r ponse ? mon avis, il veut
quelque chose dans ce gout la :



AMHA, il veut écrire un flux de bit binaire, pas texte.
Quelque chose comme ça:
http://assassinationscience.com/johncostella/bitstream/

[snip]



--
Michael
Avatar
James Kanze
On Apr 21, 9:47 pm, "MGN" wrote:
>> auriez-vous connaissance d'une petit bibliothèque
>> permettant la lecture/écriture bit à bit? Par exemple,
>> écrire tel nombre avec 3 bits, puis un autre avec 11 bits,
>> etc.

> std::bitset ?

AMHA, tu ne peux pas lire/écrire bit à bit, au minimum un
char...



Ça dépend. Ça dépend du périphérique, et ça dépend du nivea u
logique. Au niveau physique le plus bas, sur un disque, on ne
peut écrire que des secteurs, par exemple. Mais le SE fournit
une abstraction supérieur, qui permet l'écriture et la lecture
des octets (sur la plupart des systèmes). Si j'ai bien compris
la question, le posteur initial cherchait l'implémentation d'une
abstraction qui permettrait l'écriture et la lecture au niveau
des bits.

Je n'en connais pas de disponible, déjà fait. En implémenter
une, en revanche, n'est pas sorcier, mais l'implémentation
« logique » la plus simple risque d'être assez lente. (D'après
mes expériences, il y a pas mal d'années.) Enfin, le principe,
c'est plus ou moins le même qui sert au système pour écrire des
octets dans un secteur : on maintient une position logique en
bits, où on écrit ou lit, et on gère le buffer. Le problème,
c'est la performance, parce qu'au moins d'après mes expériences,
écrire 11 bits bit à bit, ça risque d'exiger beaucoup du temps
CPU. En général, il faudrait s'arranger pour écrire le maximum
possible de bits (dans un octet, ou un mot) d'un coup.

Quant à std::bitset, je ne vois pas trop où il pourrait y être
utile.

--
James Kanze