前言

先放两张图

将字符串以二进制的形式编码,也就是图片中那一大串二进制代码.看起来好像很厉害的样子,其实实现起来十分的简单.在不懂的朋友面前或许我们还可以用这个方式装个逼 (逃

实现

原理

简单说下实现的方法:

  • 字符串以二进制形式编码:将字符串以二进制编码其实就是利用字符的ASCII码,并将每个字符的ASCII码转换为二进制的形式便将字符串”藏在了二进制编码中”.
  • 将二进制字符串还原:也就是将图片中的二进制字符串”破解”,其实也很简单,就是将二进制字符串分割,再转换为十进制的ASCII码,最后再转为字符类型即可.说白了,就是将上面的步骤反过来.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class BinaryString {
private String binaryCode="";
public BinaryString(String str) {
char[] chars = str.toCharArray();
for (char ch : chars) {
String s=Integer.toBinaryString((int)ch);//将字符的ASCII码转换为二进制
while(s.length()<8)//不够8位则在前面补0
s="0"+s;
binaryCode+=s+" ";
}
}
public String getBinaryCode(){
//得到二进制编码的字符串
return binaryCode;
}
public static String toDecimalString(String binaryCode){
//将二进制编码的字符串还原
String decimalString="";
String[] strings=binaryCode.split(" ");//分割二进制字符串,得到每个字符的二进制字符串
for(String str:strings){
char ch= (char) Integer.parseInt(str,2);//转换为十进制ASCII并强制类型转换为char
decimalString+=ch;
}
return decimalString;
}
public static void main(String[] args) {
String Code="01010011 01101111 01101101 01100101 " +
"01110100 01101001 01101101 01100101 " +
"01110011 00100000 01001001 00100000 " +
"01100110 01100001 01101001 01101100 " +
"00100000 01101111 01110010 01100100 " +
"01100101 01110010 01110011 00100000 " +
"01101111 01101110 00100000 01110000 " +
"01110101 01110010 01110000 01101111 " +
"01110011 01100101 00100000 01110100 " +
"01101111 00100000 01100001 01101110 " +
"01101110 01101111 01111001 00100000 " +
"01101101 01111001 00100000 01110100 " +
"01100101 01100001 01101101 00100001";
System.out.println(toDecimalString(Code));
System.out.println(new BinaryString("Thrall and Jaina sitting in a tree, K-I-S-S-I-N-G").getBinaryCode());
}
}

输出

1
2
Sometimes I fail orders on purpose to annoy my team!
01010100 01101000 01110010 01100001 01101100 01101100 00100000 01100001 01101110 01100100 00100000 01001010 01100001 01101001 01101110 01100001 00100000 01110011 01101001 01110100 01110100 01101001 01101110 01100111 00100000 01101001 01101110 00100000 01100001 00100000 01110100 01110010 01100101 01100101 00101100 00100000 01001011 00101101 01001001 00101101 01010011 00101101 01010011 00101101 01001001 00101101 01001110 00101101 01000111