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));
这两句是什么意思?

解决方案 »

  1.   

    与后可以保证非负
    取高半字节右移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进制
      

  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(),你去找找看。