网上很多实现方法为
/**
* 字符串转换成十六进制值
* @param bin String 我们看到的要转换成十六进制的字符串
* @return
*/
public static String bin2hex(String bin) {
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
}
return sb.toString();
} /**
* 十六进制转换字符串
* @param hex String 十六进制
* @return String 转换后的字符串
*/
public static String hex2bin(String hex) {
String digital = "0123456789ABCDEF";
char[] hex2char = hex.toCharArray();
byte[] bytes = new byte[hex.length() / 2];
int temp;
for (int i = 0; i < bytes.length; i++) {
temp = digital.indexOf(hex2char[2 * i]) * 16;
temp += digital.indexOf(hex2char[2 * i + 1]);
bytes[i] = (byte)(temp & 0xff);
}
return new String(bytes);
}但是我的实现方法为
/**
* 字符串转换成十六进制值
* @param bin String 我们看到的要转换成十六进制的字符串
* @return
*/
public static String bin2hex(String bin) {
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
for(int i=0;i<bs.length;i++){
String a=Integer.toHexString(bs[i]);
//String a=String.format("%x",bs[i])
sb.append(a);
}
return sb.toString();
} /**
* 十六进制转换字符串
* @param hex String 十六进制
* @return String 转换后的字符串
*/
public static String hex2bin(String hex) {
StringBuffer sb = new StringBuffer("");
for(int i=0;i<hex.length();i=i+2){
String a=hex.substring(i,i+2);
char b=(char)Integer.valueOf(a,16);
sb.append(b);
}
return new String(sb);
}我感觉下面的方法也能够达到目的,而且测试也通过,但是不知道是否可行?有没有BUG?谢谢指正!!
/**
* 字符串转换成十六进制值
* @param bin String 我们看到的要转换成十六进制的字符串
* @return
*/
public static String bin2hex(String bin) {
char[] digital = "0123456789ABCDEF".toCharArray();
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
int bit;
for (int i = 0; i < bs.length; i++) {
bit = (bs[i] & 0x0f0) >> 4;
sb.append(digital[bit]);
bit = bs[i] & 0x0f;
sb.append(digital[bit]);
}
return sb.toString();
} /**
* 十六进制转换字符串
* @param hex String 十六进制
* @return String 转换后的字符串
*/
public static String hex2bin(String hex) {
String digital = "0123456789ABCDEF";
char[] hex2char = hex.toCharArray();
byte[] bytes = new byte[hex.length() / 2];
int temp;
for (int i = 0; i < bytes.length; i++) {
temp = digital.indexOf(hex2char[2 * i]) * 16;
temp += digital.indexOf(hex2char[2 * i + 1]);
bytes[i] = (byte)(temp & 0xff);
}
return new String(bytes);
}但是我的实现方法为
/**
* 字符串转换成十六进制值
* @param bin String 我们看到的要转换成十六进制的字符串
* @return
*/
public static String bin2hex(String bin) {
StringBuffer sb = new StringBuffer("");
byte[] bs = bin.getBytes();
for(int i=0;i<bs.length;i++){
String a=Integer.toHexString(bs[i]);
//String a=String.format("%x",bs[i])
sb.append(a);
}
return sb.toString();
} /**
* 十六进制转换字符串
* @param hex String 十六进制
* @return String 转换后的字符串
*/
public static String hex2bin(String hex) {
StringBuffer sb = new StringBuffer("");
for(int i=0;i<hex.length();i=i+2){
String a=hex.substring(i,i+2);
char b=(char)Integer.valueOf(a,16);
sb.append(b);
}
return new String(sb);
}我感觉下面的方法也能够达到目的,而且测试也通过,但是不知道是否可行?有没有BUG?谢谢指正!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货