如何将大型二进制String转换为字节数组java?

我有一个大的二进制字符串“101101110 …”,我试图将它存储到一个字节数组。 这样做的最佳方式是什么?

可以说我有largeString =“0100111010111011011000000001000110101”

结果我正在寻找:

[78,187,96,17,21]

01001110 10111011 01100000 00010001 10101

我尝试过的:

byte[] b= new BigInteger(largeString,2).toByteArray();

但它没有给我我想要的结果……

如果你想要一个实际的数组,你可以轻松地构建一个可以调用toAray的ArrayList;

 List list = new ArrayList<>(); for(String str : largeString.split("(?<=\\G.{8})")) list.add(Integer.parseInt(str, 2)); System.out.println(list); // Outputs [78, 187, 96, 17, 21] 

在循环中做它。 将字符串拆分为8个字符的块并单独转换它们。 在“伪代码”中它是这样的:

 byte[] result = new byte[subs.size()]; int i = 0; int j = 0; while(i+8 <= s.length){ result[j] = new Byte.valueOf(largeString.substring(i, i+8), 2); i+=8; j++; } result[j] = new Byte.valueOf(largeString.substring(i, largeString.length)); 

假设您的二进制字符串模块8等于0 binString.lenght()%8==0

  /** * Get an byte array by binary string * @param binaryString the string representing a byte * @return an byte array */ public static byte[] getByteByString(String binaryString) { int splitSize = 8; if(binaryString.length() % splitSize == 0){ int index = 0; int position = 0; byte[] resultByteArray = new byte[binaryString.length()/splitSize]; StringBuilder text = new StringBuilder(binaryString); while (index < text.length()) { String binaryStringChunk = text.substring(index, Math.min(index + splitSize, text.length())); Integer byteAsInt = Integer.parseInt(binaryStringChunk, 2); resultByteArray[position] = byteAsInt.byteValue(); index += splitSize; position ++; } return resultByteArray; } else{ System.out.println("Cannot convert binary string to byte[], because of the input length. '" +binaryString+"' % 8 != 0"); return null; } }