我正在尝试将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();
答案 0 :(得分:1)
您可能已经知道这一点,但要创建一个20字节的数组:
byte [] arr = new byte[20];
然后您可以手动放置所需的元素。
你没有得到理想结果的原因是因为BigInteger正在修剪前导零,所以这可能不是你想要实现的好工具。
您也可以使用字符串来创建字节数组。
String s = "9B7D2C34A3623432DF30641E6CECF6F";
byte[] bytes = Hex.decodeHex(s.toCharArray());
对我而言,这似乎是创建阵列的最佳方式。 顺便说一下,这不是你的字符串的十六进制表示,你可以自己做