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; } }
原文地址:http://blog.csdn.net/q394895302/article/details/50604929