public class StrBinaryTurn { //將Unicode字符串轉換成bool型數組 public boolean[] StrToBool(String input){ boolean[] output=Binstr16ToBool(BinstrToBinstr16(StrToBinstr(input))); return output; } //將bool型數組轉換成Unicode字符串 public String BoolToStr(boolean[] input){ String output=BinstrToStr(Binstr16ToBinstr(BoolToBinstr16(input))); return output; } //將字符串轉換成二進制字符串,以空格相隔 private String StrToBinstr(String str) { char[] strChar=str.toCharArray(); String result=""; for(int i=0;i<strChar.length;i++){ result +=Integer.toBinaryString(strChar[i])+ " "; } return result; } //將二進制字符串轉換成Unicode字符串 private String BinstrToStr(String binStr) { String[] tempStr=StrToStrArray(binStr); char[] tempChar=new char[tempStr.length]; for(int i=0;i<tempStr.length;i++) { tempChar[i]=BinstrToChar(tempStr[i]); } return String.valueOf(tempChar); } //將二進制字符串格式化成全16位帶空格的Binstr private String BinstrToBinstr16(String input){ StringBuffer output=new StringBuffer(); String[] tempStr=StrToStrArray(input); for(int i=0;i<tempStr.length;i++){ for(int j=16-tempStr[i].length();j>0;j--) output.append('0'); output.append(tempStr[i]+" "); } return output.toString(); } //將全16位帶空格的Binstr轉化成去0前綴的帶空格Binstr private String Binstr16ToBinstr(String input){ StringBuffer output=new StringBuffer(); String[] tempStr=StrToStrArray(input); for(int i=0;i<tempStr.length;i++){ for(int j=0;j<16;j++){ if(tempStr[i].charAt(j)=='1'){ output.append(tempStr[i].substring(j)+" "); break; } if(j==15&&tempStr[i].charAt(j)=='0') output.append("0"+" "); } } return output.toString(); } //二進制字串轉化爲boolean型數組 輸入16位有空格的Binstr private boolean[] Binstr16ToBool(String input){ String[] tempStr=StrToStrArray(input); boolean[] output=new boolean[tempStr.length*16]; for(int i=0,j=0;i<input.length();i++,j++) if(input.charAt(i)=='1') output[j]=true; else if(input.charAt(i)=='0') output[j]=false; else j--; return output; } //boolean型數組轉化爲二進制字串 返回帶0前綴16位有空格的Binstr private String BoolToBinstr16(boolean[] input){ StringBuffer output=new StringBuffer(); for(int i=0;i<input.length;i++){ if(input[i]) output.append('1'); else output.append('0'); if((i+1)%16==0) output.append(' '); } output.append(' '); return output.toString(); } //將二進制字符串轉換爲char private char BinstrToChar(String binStr){ int[] temp=BinstrToIntArray(binStr); int sum=0; for(int i=0; i<temp.length;i++){ sum +=temp[temp.length-1-i]<<i; } return (char)sum; } //將初始二進制字符串轉換成字符串數組,以空格相隔 private String[] StrToStrArray(String str) { return str.split(" "); } //將二進制字符串轉換成int數組 private int[] BinstrToIntArray(String binStr) { char[] temp=binStr.toCharArray(); int[] result=new int[temp.length]; for(int i=0;i<temp.length;i++) { result[i]=temp[i]-48; } return result; } }