6

whileループに一連のビット(「01100011」など)といくつかの整数を含む文字列があります。例えば:

while (true) {
    int i = 100;
    String str = Input Series of bits

    // Convert i and str to byte array
}

ここで、stringとintをバイト配列に変換するための最も高速な方法が必要です。これまで私が行ったことは、両方の文字列に変換intしてからメソッドをString適用することです。getBytes()ただし、少し遅いです。それよりも速い(おそらく)それを行う他の方法はありますか?

4

3 に答える 3

7

Java ByteBufferクラスを使用できます。

byte[] bytes = ByteBuffer.allocate(4).putInt(1000).array();
于 2012-04-07T04:55:29.167 に答える
2

int の変換は簡単です (リトルエンディアン):

byte[] a = new byte[4];
a[0] = (byte)i;
a[1] = (byte)(i >> 8);
a[2] = (byte)(i >> 16);
a[3] = (byte)(i >> 24);

文字列を変換するには、まず で整数に変換してからInteger.parseInt(s, 2)、上記を実行します。Longビット文字列が最大 64 ビットで、BigIntegerそれよりも大きい場合に使用します。

于 2012-04-07T04:59:11.010 に答える
1

int の場合

public static final byte[] intToByteArray(int i) {
    return new byte[] {
            (byte)(i >>> 24),
            (byte)(i >>> 16),
            (byte)(i >>> 8),
            (byte)i};
}

文字列用

byte[] buf = intToByteArray(Integer.parseInt(str, 2))
于 2012-04-07T05:00:30.893 に答える