【发布时间】:2019-08-11 11:48:18
【问题描述】:
我有一个整数 1 和 0 的数组(可能需要转换为 byte 类型?)。我已经使用 [一个在线 ASCII 到二进制生成器][1] 来获得这个 6 位字母序列的等效二进制:
abcdef 应该等于二进制的011000010110001001100011011001000110010101100110。
我的数组设置为int[] curCheckArr = new int[48];,我的字符串基本上只是使用StringBuilder 来构建与字符串相同的整数,并调用toString() - 所以我可以将代码作为字符串或数组访问.
我尝试了几种不同的方法,所有这些方法都会导致浏览器崩溃,包括:
StringBuilder curCheckAlphaSB = new StringBuilder(); // Some place to store the chars
Arrays.stream( // Create a Stream
curCheckString.split("(?<=\\G.{8})") // Splits the input string into 8-char-sections (Since a char has 8 bits = 1 byte)
).forEach(s -> // Go through each 8-char-section...
curCheckAlphaSB.append((char) Integer.parseInt(s, 2)) // ...and turn it into an int and then to a char
);
String curAlpha = curCheckAlphaSB.toString();
和
String curAlpha = "";
for (int b = 0; b < curCheckString.length()/8; b++) {
int a = Integer.parseInt(curAlpha.substring(8*b,(b+1)*8),2);
curAlpha += (char)(a);
}
如何最有效地将这 48 个 1 和 0 转换为六位字母字符序列?
【问题讨论】: