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.