您的位置:首页 > 编程语言 > Java开发

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

2011-04-06 13:07 483 查看
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; 
    } 
   

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string output input class