D4rkA
Messages postés2Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention10 mars 2006
-
10 mars 2006 à 13:10
D4rkA
Messages postés2Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention10 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 )
tucobouch
Messages postés194Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention 1 mai 200950 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!)
D4rkA
Messages postés2Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention10 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 ...