public class To_Hex
{//将字节数组转化为16进制的字符串
public static String toHex(byte[] buffer){
StringBuffer sb = new StringBuffer(buffer.length * 2);
for (int i = 0; i < buffer.length; i++){
sb.append(Character.forDigit((buffer[i] & 0xf0) >> 4, 16));
sb.append(Character.forDigit(buffer[i] & 0x0f, 16));
}
return sb.toString();
}
}
在下不知道:sb.append(Character.forDigit((buffer[i] & 0xf0) >> 4, 16));
sb.append(Character.forDigit(buffer[i] & 0x0f, 16));
这两句是什么意思?
6 个解决方案
#1
与后可以保证非负
取高半字节右移4位 转化为16进制
取低半字节 转化为16进制
其中注意forDigit方法的参数限制
0 <= digit < radix
取高半字节右移4位 转化为16进制
取低半字节 转化为16进制
其中注意forDigit方法的参数限制
0 <= digit < radix
#2
buffer[i] & 0xf0) >> 4 先与0xf0相与取高四位,并右移四位
buffer[i] & 0x0f 与0x0f相与取低四位
Character.forDigit((buffer[i] & 0xf0) >> 4, 16)将其转换为16进制
buffer[i] & 0x0f 与0x0f相与取低四位
Character.forDigit((buffer[i] & 0xf0) >> 4, 16)将其转换为16进制
#3
我以前写了一个,原来是用在md5加密算法里的,你可以用这个,:)
public String bytes2Hex(byte[]bts) {
StringBuilder strBuild = new StringBuilder();
for(int i=0; i<bts.length; i++){
strBuild.append(Integer.toHexString(bts[i]&0xFF));
}
return strBuild.toString();
}
#4
thinking in java里有个例子,使用的是String.format(),你去找找看。
#5
谢谢
#6
#1
与后可以保证非负
取高半字节右移4位 转化为16进制
取低半字节 转化为16进制
其中注意forDigit方法的参数限制
0 <= digit < radix
取高半字节右移4位 转化为16进制
取低半字节 转化为16进制
其中注意forDigit方法的参数限制
0 <= digit < radix
#2
buffer[i] & 0xf0) >> 4 先与0xf0相与取高四位,并右移四位
buffer[i] & 0x0f 与0x0f相与取低四位
Character.forDigit((buffer[i] & 0xf0) >> 4, 16)将其转换为16进制
buffer[i] & 0x0f 与0x0f相与取低四位
Character.forDigit((buffer[i] & 0xf0) >> 4, 16)将其转换为16进制
#3
我以前写了一个,原来是用在md5加密算法里的,你可以用这个,:)
public String bytes2Hex(byte[]bts) {
StringBuilder strBuild = new StringBuilder();
for(int i=0; i<bts.length; i++){
strBuild.append(Integer.toHexString(bts[i]&0xFF));
}
return strBuild.toString();
}
#4
thinking in java里有个例子,使用的是String.format(),你去找找看。
#5
谢谢