2016-05-12 21 views
0

In Java habe ich eine Zeichenfolge von Bits, z. "01100111000111 ...". Als nächstes möchte ich folgendes tun:Java: Bits -> Bytes -> String-Codierung

  1. konvertieren String-Byte-Array, das ich erfolgreich mit getan haben: byte[] bytes = new BigInteger(bits, 2).toByteArray();
  2. Als nächstes I Bytes in String konvertiert werden soll, die ich versucht, mit zu tun: String byteString = new String(bytes, "UTF-8"); aber die Ergebnisse sind nicht korrekt (Müllzeichen usw.).

Ich denke, "UTF-8" ist nicht die richtige Codierung.

Bitte sagen Sie uns, ob es eine andere Möglichkeit gibt, die Zeichenfolge aus solchen Bytes oder die richtige Codierung zu erhalten.

+0

Ich denke, "US-ASCII" würde funktionieren. –

+0

so können Sie Ihre eigene Antwort für Ihre Frage bieten :-) – Leo

+0

Nun, Nein. Nur gedacht, aber es hat nicht funktioniert. Also ja, die Antwort ist immer noch erforderlich. –

Antwort

-1

nach Ihrem Kommentar Editiert:

String string = "01100111000111"; 
byte[] bytes = new BigInteger(string, 2).toByteArray(); 

String out = ""; 

for(byte b: bytes) 
out+= String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0'); 

System.out.println(out); 

Ausgang:

0001100111000111 

Hope this helfen kann.

+0

Ich denke, das ist etwas openSource hat oben vorgeschlagen. Aber die Frage ist, ich will Zeichenfolge von 1s und 0 als binär und nicht jede Ziffer als ein Byte betrachtet werden. Dann werden 8 Bit der Zeichenfolge in eine Binärdatei umgewandelt, die dem Byte [] zugewiesen wird, das dann in String benötigt wird. –