java字符串与二进制的相互转化
2016-01-29 09:13
537 查看
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; } }
相关文章推荐
- 配置免安装版JAVA1.7的环境变量
- Java socket 学习
- Eclipse SVN插件冲突导致不能使用解决办法
- Eclipse插件—Easy Explorer
- groovy 线上修改Java程序的内存
- 浅析Java设计模式编程中的单例模式和简单工厂模式
- SpringMVC使用了@ResponseBody报406错误的问题(2)
- 【Struts2集锦】Struts2的Action中多个方法调用
- 王垠:给 Java 说句公道话
- SpringMVC,3种不同的URL路由配置方法(这根本不是一个小问题)
- myeclipse 常规web项目创建
- Java 如何将字符串信息直接写保存到文本文件
- readbook:自己设计mvc框架,java类似struts2的实现
- spring aop 使用xml方式的简单总结
- Struts2学习笔记(一)
- Struts使用细节
- JAVA编译时与运行时
- java数组实现栈
- Java初学者1-Java环境及IDE
- 【Java SE】————如何做到跨平台性的?