zoukankan      html  css  js  c++  java
  • java字符串与二进制的相互转化

    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

  • 相关阅读:
    spring学习总结003 --- IOC容器启动源码(BeanFactoryPostProcessor)
    spring学习总结002 --- IOC容器启动源码(BeanFactory)
    ubuntu上安装mysql
    kafka学习总结017 --- consumer配置参数之max.poll.interval.ms
    kafka学习总结016 --- consumer配置参数session.timeout.ms和heartbeat.interval.ms
    kafka学习总结015 --- consumer配置参数之auto.offset.reset
    kafka学习总结014 --- consumer多线程问题
    kafka学习总结013 --- kafka消费者API
    kafka学习总结012 --- 数据消费相关流程
    Java SAX解析
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/7429342.html
Copyright © 2011-2022 走看看