Ich habe eine Reihe von Bits mit der Länge 128 und ich möchte es in ein Byte-Array konvertieren, dann in eine Binärdatei schreiben und später aus der Binärdatei lesen und Byte-Array zu konvertieren Bit-Zeichenfolge. Dies ist mein Code (ich benutze eine Eingabe der Länge 16 der Einfachheit halber):Bit-String aus Binärdatei in Java lesen
String stest = "0001010010000010";
//convert to byte array
short a = Short.parseShort(stest, 2);
ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);
byte[] wbytes = bytes.array();
System.out.println("Byte length: "+ wbytes.length);
System.out.println("Writing to binary file");
try {
FileOutputStream fos = new FileOutputStream("test.ai");
fos.write(wbytes);
fos.flush();
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Reading from binary file");
File inputFile = new File("test.ai");
byte[] rdata = new byte[(int) inputFile.length()];
//byte[] rdata = new byte[2];
FileInputStream fis;
String readstr = "";
try {
fis = new FileInputStream(inputFile);
fis.read(rdata, 0, rdata.length);
fis.close();
for(int i=0; i<rdata.length; i++){
Byte cb = new Byte(rdata[i]);
readstr += Integer.toBinaryString(cb.intValue());
}
System.out.println("Read data from file: " + readstr);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jedoch die Zeichenfolge, die ich aus der Datei lesen nicht gleich der ursprünglichen Zeichenfolge. Dies ist die Ausgabe:
String: 0001010010000010
Byte length: 2
Writing to binary file
Reading from binary file
Read data from file: 1010011111111111111111111111110000010
buf.clear Methode existiert nicht !!!!!!!!!! –
Ich erinnere mich nicht an die tatsächliche Funktion. Zweck ist jedoch die Reinigung des Puffers. Der Methodenname könnte "sauber" sein. oder du kannst buf = new verwenden StringBuffer(); – Adem