13 votes

Convertir une chaîne binaire en tableau d'octets

J'ai une chaîne de uns et de zéros que je veux convertir en un tableau d'octets.

Par exemple String b = "0110100001101001" Comment puis-je convertir cela en un byte[] de longueur 2 ?

25voto

Jeff Foster Points 22175

Parsemez-le en un entier en base 2, puis convertissez-le en un tableau d'octets. En fait, puisque vous disposez de 16 bits, il est temps de sortir le rarement utilisé short .

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

byte[] array = bytes.array();

24voto

Shreyos Adikari Points 3579

Une autre approche simple est :

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

2voto

lidox Points 945

En supposant que votre chaîne binaire peut être divisée par 8 sans obtenir de reste, vous pouvez utiliser la méthode suivante :

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

N'oubliez pas d'ajouter le librairie guava à vos dépendances.

Dans Android, vous devez ajouter à l'application gradle :

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

Et ajoutez ceci dans le projet gradle :

allprojects {
    repositories {
        mavenCentral()
    }
}

Mise à jour 1

Ce message contient une solution sans utiliser Guava Lib.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X