如何将二进制字符串转换为文本?

3

我是一名程序员,正在从事一项个人项目。我想创建一个加密程序,让你可以使用密钥加密和解密字符串。目前已经接近完成,只需要帮助最后一部分。我想将二进制字符串转换为文本。 比如说,这是我想要转换成普通文本的二进制结果:

01001000011000010110100001100001

将其转换为文本后是“哈哈”。

注意:我只使用BigIntegers,因为我使用的几乎每个数字都太大了,以至于普通整数无法处理。

编辑:使用以下代码找到答案:

    StringBuffer output = new StringBuffer();
for (int i = 0;i < input.length();i += 8) {
  output.append((char) Integer.parseInt(input.substring(i, i + 8), 2));
}
       System.out.println(output);

可能是重复的问题 https://dev59.com/uW855IYBdhLWcg3wq2TL - AshBringer
@BipBip对我没有帮助,因为我正在使用BigIntegers。而他们正在使用ints。 - fihdi
@fihdi 你可以参考这个问题:https://dev59.com/21bTa4cB1Zd3GeqP-F0z#5717191 - iYoung
@RajatDeepSingh,这似乎可行,你能否也用Base36来做一下呢?因为我现在正在使用Base36。 - fihdi
input.substring?这是BigInteger吗? - rr-
2
请将您的解决方案发布为答案并接受它,以便帮助其他人。 - John La Rooy
1个回答

0

这段代码可以一行搞定:

String str = "01001000011000010110100001100001";

String decoded = Arrays.stream(str.split("(?<=\\G.{8})"))
    .map(s -> Integer.parseInt(s, 2))
    .map(i -> "" + Character.valueOf((char)i.intValue()))
    .collect(Collectors.joining("")); // "Haha"

这段代码可能可以更美观,但我手头没有集成开发环境(只是在手机上输入的)。

你会注意到不需要使用BigInteger,而且这段代码可以处理任意长度的输入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接