13

バイト配列に変換したい 1 と 0 の文字列があります。

たとえば、これを長さ 2String b = "0110100001101001"に変換するにはどうすればよいですか?byte[]

4

3 に答える 3

25

基数 2 の整数に解析してから、バイト配列に変換します。実際、16 ビットあるので、めったに使用されないshort.

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

byte[] array = bytes.array();
于 2013-07-18T15:12:09.000 に答える
23

別の簡単なアプローチは次のとおりです。

String b = "0110100001101001";
byte[] bval = new BigInteger(b, 2).toByteArray();
于 2013-07-18T15:27:33.407 に答える
2

バイナリ文字列を残りを取得せずに 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 では、アプリ gradle に追加する必要があります。

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

これをプロジェクト gradle に追加します。

allprojects {
    repositories {
        mavenCentral()
    }
}

更新 1

この投稿には、Guava Lib を使用しないソリューションが含まれています。

于 2016-11-28T10:06:58.857 に答える