2016-05-12 2 views
0

В Java у меня есть строка бит, например. "01100111000111 ...". Далее, я хочу сделать следующее:Java: Bits -> Bytes -> String Encoding

  1. преобразовать строку в массив байтов, который я успешно сделано с помощью: byte[] bytes = new BigInteger(bits, 2).toByteArray();
  2. Далее, я хочу, чтобы преобразовать байт в строку, которую я попытался сделать с помощью: String byteString = new String(bytes, "UTF-8"); , но результаты неправильные (символы мусора и т. Д.).

Я думаю, что «UTF-8» не является надлежащим кодированием.

Просьба указать, есть ли другой способ получить строку из таких байтов или правильную кодировку.

+0

Я думаю, что «US-ASCII» будет работать. –

+0

, чтобы вы могли предоставить свой ответ на свой вопрос :-) – Leo

+0

Ну, просто подумал, но это не сработало. Так что да, ответ по-прежнему требуется. –

ответ

-1

Отредактирован после Вашего комментария:

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); 

выхода:

0001100111000111 

Надеется, что это может помочь.

+0

Я думаю, что это несколько openSource предложил выше. Но вопрос в том, что я хочу, чтобы строка из 1s и 0s считалась двоичной, а не каждая цифра байтами. Затем 8 бит строки преобразуются в двоичный файл, который присваивается байту [], который затем необходим в String. –

Смежные вопросы