1
我得到了一個用於Java中MD5哈希生成的代碼。它產生在字節數組「字節」的散列,然後轉換爲整數,然後字符串如下:字節轉換爲整數,然後轉換爲Java中的字符串轉換
byte[] bytes=md.digest(textToHash.getBytes());
StringBuilder sb=new StringBuilder();
for(int i=0;i<bytes.length;i++)
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
予理解的是,bytes[i] & 0xff
字節轉換成32位的長度複製該字節到的至少顯著字節的整數整數:
What does value & 0xff do in Java?
但是我不明白+ 0x100, 16
在上面的代碼中的第4行確實在括號中。感謝您的幫助。
謝謝,但最新是什麼,16? –
'16'是*基數* - 即16進制,即十六進制。該代碼基本上輸出'1'作爲'「01」'而不是''1'' – Bohemian
謝謝。我還在論壇上找到了一個更簡單的方法:sb.append(String.format(「%02X」,bytes [i])); –