Ich arbeite an einem Komprimierungsalgorithmus und dafür muss ich Bitfolgen in eine Binärdatei schreiben und genau dasselbe wieder zu einem String zurückholen! sagen, ich habe eine Zeichenfolge "10100100100 ....." und ich werde sie in einer Datei als BitsSchreiben Sie Bits in eine Datei und rufen Sie sie in einer Zeichenkette von "0101 .." in Java ab?
(nicht Zeichen '0' '1')
schreiben. und zurücklesen als bits und konvertieren in string ... und dies ist für eine große datenmenge (> 100 megabyte). gibt es eine nette und schnelle Möglichkeit, dies zu tun?
Bisher habe ich es versucht (und gescheitert), sie in Bytes zu schreiben, indem ich sie in 8 Bits und dann als ASCII-Zeichen in eine Zeichenkette und schließlich in eine .txt-Datei untergeordnet habe.
{
String Bits="10001010100000000000"; // a lot larger in actual program
String nCoded="";
char nextChar;
int i = 0;
for(i=0; i < Bits.length()-8; i += 8){
nextChar = (char)Integer.parseInt(Bits.substring(i, i+8), 2);
nCoded += nextChar;
}
// for the remainding bits, padding
if(newBits.length()%8 != 0){
nCoded+=(char)Integer.parseInt(Bits.substring(i), 2);
}
nCoded+=(char)Bits.length()%8; //to track the remainder of Bits that was padded
writeToTextFile(nCoded, "file.txt"); //write the nCoded string to file
}
aber dies scheint Informationen zu korrumpieren und ineffizient. wieder zur Klarstellung, ich möchte nicht die String geschrieben werden, es ist nur eine Darstellung der tatsächlichen Daten. So möchte ich
convert jeweils 0 und 1 aus der String-Darstellung seiner binären Form und schreiben, dass einzureichen.
Wird die Zeichenfolge immer eine binäre Zeichenfolge sein:
Ein Hinweis, wie man ein Byte zu einem schönen String-Format konvertieren kann hier gefunden werden? –
Ist es wirklich notwendig, die Bits in einem tatsächlichen 'String' zu haben? Das scheint eine unnötige Komplikation zu sein. Wenn Sie sie ausschreiben, während Sie sie generieren, können Sie einen einfachen Bitpuffer in einem int verwenden, den Sie regelmäßig leeren. – harold
ja. sie werden nur 1s und 0s enthalten @DarshanMehta –