6

我有一个字符串,其中包含一系列位(如“01100011”)和while循环中的一些整数。例如:

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

    // Convert i and str to byte array
}

现在我想要一种将字符串和 int 转换为字节数组的最快方法。到目前为止,我所做的是将方法转换intString然后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

对于整数

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 回答