JAVA实现二进制和16进制之间的互相转换,8进制同理,附带异或操作实现
2014-09-02 17:11
666 查看
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方法来实现的,只不过是分段转换
相关文章推荐
- java:实现字符串到二进制字符、16进制字符、unicode字符、base64字符之间的转换
- Java实现DOM文档操作和XML文件互相转换
- DOM文档操作和XML文件互相转换的java实现
- java实现颜色Color对象和16进制之间的转换
- jsontools实现java对象与json值之间互相转换
- JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换
- JAXB 实现java对象与xml之间互相转换
- java对象与json对象之间互相转换实现方法示例
- JAXB 实现java对象与xml之间互相转换
- java对象和Map之间互相转换的三种实现方式
- DOM文档操作和XML文件互相转换的java实现
- JAXB 实现java对象与xml之间互相转换(一)
- java中二进制,8进制,10进制,16进制的转换
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- Java的十六进制与字符串之间互相转换函数(16进制与String转换)
- JAXB 实现java对象与xml之间互相转换
- JAVA 实现jpg/tif/bmp 等图片之间格式得互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换