-3

我正在尝试将 160 长度的二进制字符串转换为 20 个字节。我正在使用 BigInteger 来获取一个字节数组。它只返回 14 个字节,我需要 20 个字节。

这是我的代码:

BigInteger b = new BigInteger("0000000000000000000000000000000000000000000001010000000000000000000000000000010000010100001011111110000000000000000000000000000000000000000000000000000000000000", 2);
byte[] newData = b.toByteArray();
ByteArrayOutputStream output = new ByteArrayOutputStream(20);
for (int i = 0; i < 20 - newData.length; i++) {
    output.write((byte) 0x00);
}
output.write(newData);
newData = output.toByteArray();
4

1 回答 1

1

您可能已经知道这一点,但要创建一个 20 字节的数组,您可以这样做:

byte [] arr = new byte[20];

然后,您可以手动放入所需的元素。

你没有得到想要的结果的原因是因为 BigInteger 正在修剪前导零,所以这可能不是你想要实现的好工具。

你也可以用一个字符串来创建一个字节数组。

String s = "9B7D2C34A3623432DF30641E6CECF6F";    
byte[] bytes = Hex.decodeHex(s.toCharArray());

对我来说,这似乎是创建阵列的最佳方式。顺便说一句,这不是你的字符串的十六进制表示,你可以自己做

于 2013-07-06T00:32:24.737 回答