从这里的讨论,特别是这个答案,这是我目前使用的功能:privatefinalstaticchar[]hexArray="0123456789ABCDEF".toCharArray();publicstaticStringbytesToHex(byte[]bytes){
char[]hexChars=newchar[bytes.length*2];
for(intj=0;j
intv=bytes[j]&0xFF;
hexChars[j*2]=hexArray[v>>>4];
hexChars[j*2+1]=hexArray[v&0x0F];
}
returnnewString(hexChars);}
我自己的微小基准测试(一百万字节一千万次,256字节一千万次)显示它比任何其他替代方案快得多,大约是长阵列的一半时间。与我从中得到的答案相比,切换到按位运算 - 如讨论中所建议的那样 - 为长阵列削减了大约20%的时间。(编辑:当我说它比替代品更快时,我的意思是讨论中提供的替代代码。性能等同于Commons Codec,它使用非常相似的代码。)