2015-05-31 72 views
3

我正在个人项目上工作。我想创建一个加密程序,让您使用密钥对字符串进行加密和解密。几乎完成只需要最后一部分的帮助。我想将二进制字符串转换为文本。 假设二元结果(我想转换成普通文本)是:如何将二进制字符串转换为文本?

01001000011000010110100001100001 

此转换成文本是“哈哈”。

注意:我只使用BigIntegers,因为几乎我使用的每个数字对于普通Integer来说都太大了。

编辑:发现使用此验证码答案:

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); 
+0

可能的重复http://stackoverflow.com/questions/4211705/binary-to-text-in-java – AshBringer

+0

@BipBip没有帮助,因为我正在使用BigIntegers。他们正在整合。 – fihdi

+0

@fihdi你可以参考这个问题http://stackoverflow.com/questions/5716830/convert-biginteger-to-shorter-string-in-java/5717191#5717191 – iYoung

回答

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" 

大概可以做出漂亮的,但我没有”没有IDE的便利(只是在我的手机上翻了一下)。

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

相关问题