JAVA实现二进制和16进制之间的互相转换,8进制同理,附带异或操作实现
来源:互联网 发布:像堆糖一样的软件 编辑:程序博客网 时间:2024/05/29 11:22
public static String bin2Hex(String binStr) {int deci = Integer.valueOf(binStr,2);return Integer.toHexString(deci);}public static String hex2Bin(String hexStr) {int deci = Integer.valueOf(hexStr,16);return Integer.toBinaryString(deci);}
public static void main(String args[]) {String str = "f012";System.out.println(hex2Bin(str));System.out.println(bin2Hex("01011011"));}
执行结果:
1111000000010010
5b
非常简单
8进制同理,转换
但是以上方法的缺陷是,16进制或2进制串很大时就转换失败,下面给出通用方法:
public static String bin2Hex(String binStr) {StringBuffer temp = null;while (binStr.length() % 4 != 0) {temp = new StringBuffer(binStr);temp.insert(0, "0");binStr = temp.toString();}StringBuffer sb = new StringBuffer();int deci = 0;for (int i = 0; i <= binStr.length() - 4; i += 4) {deci = Integer.valueOf(binStr.substring(i, i + 4), 2);sb.append(Integer.toHexString(deci));}return sb.toString();}
public static String hex2Bin(String hexStr) {StringBuffer sb = new StringBuffer();int deci = 0;StringBuffer temp = null;for (int i = 0; i < hexStr.length(); i++) {deci = Integer.valueOf(hexStr.charAt(i) + "", 16);temp = new StringBuffer(Integer.toBinaryString(deci));while (temp.length() < 4) {temp.insert(0, "0");}sb.append(temp);}return sb.toString();}
顺带来个异或操作:
public static String xor(String binStr1, String binStr2) {int len1 = binStr1.length();int len2 = binStr2.length();StringBuffer sb = new StringBuffer();if (len1 != len2) {return null;}for (int i = 0; i < len1; i++) {if (binStr1.charAt(i) == binStr2.charAt(i)) {sb.append("0");} else {sb.append("1");}}return sb.toString();}
public static void main(String args[]) {String str = "89451211512131";String str2 = "fd589213165131";String bin1 = hex2Bin(str);String bin2 = hex2Bin(str2);System.out.println(bin1.length() + "==" + bin2.length());System.out.println(bin2Hex(bin1));System.out.println(bin2Hex(bin2));String bin = xor(bin1,bin2);System.out.println(bin2Hex(bin));}运行结果如下:
56==56
89451211512131
fd589213165131
741d8002477000
上述原理仍然是使用Integer.valueOf方法来实现的,只不过是分段转换
1 0
- JAVA实现二进制和16进制之间的互相转换,8进制同理,附带异或操作实现
- XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以
- java实现任意进制的互相转换
- java:实现字符串到二进制字符、16进制字符、unicode字符、base64字符之间的转换
- Java进制之间互相转换
- 进制转换:十六进制,二进制,八进制的互相转换
- Java的十六进制与字符串之间互相转换函数(16进制与String转换)
- 进制转换器(用顺序栈实现)(可实现简单的二进制或八进制或十进制的转换)
- Java 操作yaml和json之间的互相转换
- Python 进制互相转换(二进制、十进制和十六进制)
- Python进制互相转换(二进制、十进制和十六进制)
- java实现颜色Color对象和16进制之间的转换
- java对象和Map之间互相转换的三种实现方式
- MS SQL Server10进制和16进制之间的互相转换
- Java实现DOM文档操作和XML文件互相转换
- Java实现DOM文档操作和XML文件互相转换
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
- 整型和二进制之间的互相转换(代码)
- [Leetcode]吹响征战Leetcode的号角
- Eclipse下解决tomcat服务器内存不足的问题
- MODULE_DEVICE_TABLE
- LeetCode Solutions : Combination Sum I & II
- 常见的丙肝传播途径有哪些?
- JAVA实现二进制和16进制之间的互相转换,8进制同理,附带异或操作实现
- PB如何新增PBL(转)
- Linux编辑器vi使用方法详细介绍
- VS2010安装包制作全过程图解
- iphone之AVAudioRecorder
- java--输入输出的体验
- SharedPreferences详解
- php中foreach遍历类对象的总结
- declare-styleable的使用