java - 将二进制 1 和 0 的整数(或字符串)数组转换为 Java 中的 alpha 等价物

标签 java arrays binary ascii

我有一个整数 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 转换为六位字母字符序列?

最佳答案

假设每个字符恰好由一个字节表示,您可以使用Integer.parseInt()迭代输入(因为byte值在输入可能是无符号的):

String input = "011000010110001001100011011001000110010101100110";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i += 8) {
    int c = Integer.parseInt(input.substring(i, i + 8), 2);
    sb.append((char) c);
}
System.out.println(sb); // abcdef

关于java - 将二进制 1 和 0 的整数(或字符串)数组转换为 Java 中的 alpha 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55266606/

相关文章:

recursion - 计算整数的二进制 1 的递归方法函数

java - 使用 Collections.sort 和 SizeFileComparator 对 ArrayLlist<File> 中的 File 对象进行排序

javascript - 基于另一个数组操作更多 javascript 数组

c - 我不明白我的代码中发生了什么

arrays - 计算列表中 k 个最大数字之和的有效方法?

bash - 不能 `source` shc 编译的脚本

将非常大的数字从二进制转换为十进制并打印出来

java - 无法传输 http ://repo. maven.apache.org/maven2 - 错误代码 501,需要 HTTPS

java - 坐标之间的距离 - 角度 > 180(处理/Java)

java - For 循环未正确运行