将二进制字符串转换为字节数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将二进制字符串转换为字节数组相关的知识,希望对你有一定的参考价值。

我有一串1和0,我想转换为字节数组。

例如String b = "0110100001101001"如何将其转换为长度为2的byte[]

答案

将其解析为基数为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而不休息,您可以使用以下方法:

/**
 * 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中,您应该添加到app gradle:

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

并将其添加到项目gradle中:

allprojects {
    repositories {
        mavenCentral()
    }
}

更新1

This post contains没有使用Guava Lib的解决方案。

以上是关于将二进制字符串转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章

将奇数长度的java字符串转换为十六进制字节数组

将二进制字符串转换为字节数组

是否可以将字符串转换为二进制表示的字节数组

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

将二进制位转换为字节数组