Я пытаюсь преобразовать строку бит в символы Unicode в java. Проблема в том, что я получаю только признаки скулов и т. Д.
Строковые биты = "01010011011011100110000101110010"
Кто-нибудь знает, как это сделать?
2
Labba
29 Июн 2016 в 21:35
4
Какой у вас код?
– Yassin Hajaj
29 Июн 2016 в 21:37
Во что нужно преобразовать "01010011011011100110000101110010"?
– 一二三
30 Июн 2016 в 02:28
1 ответ
Лучший ответ
Значения <= 32 бит
Используйте Integer.parseInt
для анализа двоичной строки, затем преобразуйте ее в массив байтов (используя ByteBuffer
) и, наконец, преобразуйте массив байтов в String
:
String bits = "01010011011011100110000101110010"
new String(
ByteBuffer.allocate(4).putInt(
Integer.parseInt(bits, 2)
).array(),
StandardCharsets.UTF_8
);
Значения> 32 бит
Для произвольной большой строки bits
вы также можете использовать BigInteger
:
new String(
new BigInteger(bits, 2).toByteArray(),
StandardCharsets.UTF_8
);
Результат
Snar
4
Yassin Hajaj
29 Июн 2016 в 21:59
1
Что, если строка бит была длиннее 64 бит? это не вписалось бы в Лонг
– niceman
29 Июн 2016 в 21:47
Что ж, OP показал нам только один пример, который умещается в целочисленном
– Krzysztof Krasoń
29 Июн 2016 в 21:48
2
OP показал пример, но не сказал явно «битовая строка не может быть длиннее 64», я не думаю, что мы можем это предположить :)
– niceman
29 Июн 2016 в 21:50
1
Да, хорошее замечание. Я добавил пример, который это покрывает, что еще проще :)
– Krzysztof Krasoń
29 Июн 2016 в 21:51
1
По-видимому, это приведет к неправильному поведению, если первый бит равен
– 1
(то есть, если первый символ имеет кодовую точку U + 0100 или выше), поскольку байтовый массив должен иметь дополнительный байт заполнения, чтобы сделать убедитесь, что бит знака равен 0
.
ruakh
30 Июн 2016 в 01:26
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.