最近,我開始尋找MD5哈希(在Java中),並同時我發現算法和方法來幫助我實現這個目標,我在想,它是如何實際工作。有人可以解釋從字節數組到十六進制字符串的轉換嗎?
原因之一,我發現從this URL如下:
private static String convertToHex(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
我還沒有發現任何需要使用位移位在Java中,所以我上有點生疏。有人足以說明(簡單地說)上述代碼如何轉換? 「>>>」?
我還發現在計算器上其他解決方案,比如here和here,它使用的BigInteger代替:
爲什麼這項工作過了,哪條路更有效?
感謝您的時間。
+1爲努力和擊敗我。我唯一要添加的是對按位操作文檔的引用:http://www.j2ee.me/docs/books/tutorial/java/nutsandbolts/op3.html – Welbog 2009-06-25 11:25:45
感謝您的解釋 – 2009-06-25 11:28:00