[img]http://www.gfan.com/html/uploads/allimg/130922/2249464-1309221Z625-50.jpg[/img]
小米电视背面散热孔用一组01的二进制表示一个汉字。今天就来解密一下,看表示什么。
因为看时候以为中间有个横线表示1,其实表示0,所以用x2reverse转换了一下!
好了,跑出的结果是:
小米电视为发烧而生
下面的散热孔表示的是"小 米","电 视",有个只有8个孔的表示的是空格!
小米电视背面散热孔用一组01的二进制表示一个汉字。今天就来解密一下,看表示什么。
//2进制转成汉字
public static String from2xToString(String x2String,String encode) throws UnsupportedEncodingException{
//System.out.println(x2String);
int a1=Integer.valueOf(x2String.split(" ")[0], 2);
int a2=Integer.valueOf(x2String.split(" ")[1], 2);
return new String(new byte[]{(byte) a1,(byte) a2},encode);
}
//二进制字符串0和1互转 ,有时候1和0 表示可以相反的意思,用这个方法转一下
private static String x2reverse(String x2String) {
StringBuilder sb=new StringBuilder();
for(char c:x2String.toCharArray()){
if(c=='0') sb.append('1') ;
else if(c=='1') sb.append('0');
else sb.append(c);
}
return sb.toString();
}
public static void main(String[] args) throws UnsupportedEncodingException {
String allStr="00101111 01011110;"+
"00111100 00101000;"+
"01001010 00011000;"+
"00110101 00101100;"+
"00110001 01010101;"+
"01001000 01011101;"+
"00110110 00101010;"+
"01001001 00000111;"+
"00110110 00000101;";
String[] x2StrArray=allStr.split(";");
for(String str:x2StrArray){
System.out.print(from2xToString(x2reverse(str.replaceAll(";", "")),"GBK"));
}
}
因为看时候以为中间有个横线表示1,其实表示0,所以用x2reverse转换了一下!
好了,跑出的结果是:
小米电视为发烧而生
下面的散热孔表示的是"小 米","电 视",有个只有8个孔的表示的是空格!