Преобразование двоичной строки в байтовый массив

У меня есть строка из них и нули, которые я хочу преобразовать в массив байтов.

Например String b = "0110100001101001" Как я могу преобразовать это в byte[] длины 2?

Разделите его на целое число в базе 2, а затем преобразуйте в массив байтов. На самом деле, поскольку у вас есть 16 бит, пришло время вырваться из редко используемого short .

 short a = Short.parseShort(b, 2); ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a); byte[] array = bytes.array(); 

Другой простой подход:

 String b = "0110100001101001"; byte[] bval = new BigInteger(b, 2).toByteArray(); 

Предполагая, что вашу двоичную строку можно разделить на 8 без restа, вы можете использовать следующий метод:

 /** * Get an byte array by binary string * @param binaryString the string representing a byte * @return an byte array */ public static byte[] getByteByString(String binaryString){ Iterable iterable = Splitter.fixedLength(8).split(binaryString); byte[] ret = new byte[Iterables.size(iterable) ]; Iterator iterator = iterable.iterator(); int i = 0; while (iterator.hasNext()) { Integer byteAsInt = Integer.parseInt(iterator.next().toString(), 2); ret[i] = byteAsInt.byteValue(); i++; } return ret; } 

Не забудьте добавить guava lib к вашим зависимостям.

В Android вы должны добавить в приложение gradle:

 compile group: 'com.google.guava', name: 'guava', version: '19.0' 

И добавьте это в gradleиент проекта:

 allprojects { repositories { mavenCentral() } } 

Обновление 1

Этот пост содержит решение без использования Guava Lib.

  • Проверка синтаксиса XML в Java
  • Нужны ли мне котировки для строк в Ямле?
  • Что легче читать в подзапросах EXISTS?
  • В Java, как мне получить доступ к внешнему classу, когда я не во внутреннем classе?
  • Что означает class В Java?
  • В чем разница между eq, eql, equal и equalp в Common Lisp?
  • Почему объявление переменной требуется внутри цикла for-each в java
  • Что такое разбивка на синтаксис лямбды Java?
  • Список синтаксиса объявлений блока
  • Оператор переключения Java несколько случаев
  • Что означают круглые скобки, связанные с объявлением объекта / функции / classа?
  • Давайте будем гением компьютера.