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

    xiaoxiao2021-04-18  67

    原文地址:java字符串与二进制的相互转化 作者:billdong  

    package mimaxue;

    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)==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;     }         }

    转载请注明原文地址: https://ju.6miu.com/read-675155.html

    最新回复(0)