java string binary byte bit

java - Convertir cadena binaria en matriz de bytes



string binary (3)

Tengo una serie de unos y ceros que quiero convertir a una matriz de bytes.

Por ejemplo String b = "0110100001101001" ¿Cómo puedo convertir esto a un byte[] de longitud 2?


Analizarlo en un entero en la base 2, luego convertir a una matriz de bytes. De hecho, dado que tienes 16 bits, es hora de romper el short raramente utilizado.

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


Otro enfoque simple es:

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


Suponiendo que su cadena binaria se puede dividir por 8 sin descansar, puede usar el siguiente método:

/** * 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; }

No olvides agregar guava lib a tus dependencias.

En Android, debe agregar a gradle de aplicaciones:

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

Y añada esto al proyecto gradle:

allprojects { repositories { mavenCentral() } }

Actualización 1

Esta publicación contiene una solución sin usar Guava Lib.