首页 > 编程语言 > 详细

java字符串与二进制的相互转化

时间:2017-08-25 19:09:22      阅读:283      评论:0      收藏:0      [点我收藏+]
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

java字符串与二进制的相互转化

原文:http://www.cnblogs.com/it-deepinmind/p/7429342.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!