écrire bit par bit ... comment faire ???

D4rkA Messages postés 2 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 mars 2006 - 10 mars 2006 à 13:10
D4rkA Messages postés 2 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 mars 2006 - 10 mars 2006 à 18:05
Voilà, je vous explique ... j'ai une chaine de caractère composée de 1 et de 0.
Et je voudrais écrire un fichier Bits par Bits ou alors isncrire directement la chaine de Bits de mon String.

c'est à dire : plutot que d'écrire les caractères 1 et 0 dans un fichier, qui prennent plus de place a cause de leur code ASCII, je voudrais seulement écrire LE bit 1 ou 0 ... et je bloque, je sais pas comment faire, j'ai essayé avec différente méthode mais le fichier est toujours aussi volumineux (il inscrit dont des caractéres ou autre chose mais pas des bits comme je voudrais)

Est-ce que quelqu'un aurait une solution miracle ??? (je débute un peu en JAVA en fait )

2 réponses

tucobouch Messages postés 194 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 1 mai 2009 50
10 mars 2006 à 13:55
Le mieux est de convertir ta chaine en octets : tu prends des groupes 8 bits que tu convertit en un nombre (compris entre 0 et 256) et que tu écrit dans ton fichier.
Sinon, il n'existe pas de solution d'écrire un bit a la fois. La taille minimale etant l'octet

En gros :

//chaine a convertir doit etre multiple de 8
String bin="1010001010001111";

//ton buffer de sortie dans ton fichier
try{
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(new File("mon_fichier")));

//boucle qui convertit et écrit dans le fichier :
int conv=0; //la representation numérique de ton groupe de 8 bits

for(int i=0;iJ'ai vérifié ça marche (tu peux verifier en ouvrant le fichier dans un éditeur héxadécimal!)
0
D4rkA Messages postés 2 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 mars 2006
10 mars 2006 à 18:05
En fait, je refais l'algo de Huffman ... Donc le nombre de bits que j'ai à écrire n'est pas forcément un multiple de 8. Du coup je pense que les derniers bits restant je dois les écrire dans un octet en complétant avec des 0 ...

Ouais enfait ça pourrais bien marcher, mais il faut que je refasse une partie du prog pour faire des chaines de 8 caractéres ...

Bon je vais essayer de faire ça dans le WE.

En tout cas je te remercie pour ton aide !!!
0
Rejoignez-nous