Ich versuche, eine Binärzahl Zeichenfolge in eine Datei mit Bytes zu komprimieren. Unten ist mein Versuch, diese Zeichenfolge zu konvertieren, indem Teilstrings der Länge 8 abgerufen und versucht, diese 8 Zeichen in einem einzigen Byte zu machen. Grundsätzlich macht jedes Zeichen ein bisschen. Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt. Ich darf keine speziellen Bibliotheken verwenden.Wie 8 Zeichenfolge in ein einzelnes Byte zu einem Zeitpunkt konvertieren, um in Datei in Java zu schreiben?
Encode
public static void encode(FileOutputStream C) throws IOException{
String binaryString = "1001010100011000010010101011";
String temp = new String();
for(int i=0; i<binaryString.length(); i++){
temp += binaryString.charAt(i);
// once I get 8 character substring I write this to file
if(temp.length() == 8){
byte value = (byte) Integer.parseInt(temp,2);
C.write(value);
temp = "";
}
// remaining character substring is written to file
else if(i == binaryString.length()-1){
byte value = Byte.parseByte(temp, 2);
C.write(value);
temp = "";
}
}
C.close();
}
Decode
Path path = Paths.get(args[0]);
byte[] data = Files.readAllBytes(path);
for (byte bytes : data){
String x = Integer.toString(bytes, 2);
}
Dies sind die Teil, dass ich kodieren:
10010101
00011000
01001010
1011
Leider wenn ich dekodieren erhalte ich die folgende:
-1101011
11000
1001010
1011