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