赞
踩
- // 将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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。