将字节数组转化为16进制的字符串?

Laughing 2008-04-13 10:03:39

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


...全文
190 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AbleJoy 2009-04-08
  • 打赏
  • 举报
回复
谢谢
dracularking 2008-04-13
  • 打赏
  • 举报
回复
与后可以保证非负
取高半字节右移4位 转化为16进制
取低半字节 转化为16进制

其中注意forDigit方法的参数限制
0 <= digit < radix
aipb2008 2008-04-13
  • 打赏
  • 举报
回复
thinking in java里有个例子,使用的是String.format(),你去找找看。
  • 打赏
  • 举报
回复
我以前写了一个,原来是用在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();
}
hmsuccess 2008-04-13
  • 打赏
  • 举报
回复
buffer[i] & 0xf0) >> 4 先与0xf0相与取高四位,并右移四位

buffer[i] & 0x0f 与0x0f相与取低四位
Character.forDigit((buffer[i] & 0xf0) >> 4, 16)将其转换为16进制

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧