當我重寫遺留應用程序時,我正在將Java庫轉換爲C#,我需要一些幫助。我需要了解這條線是用Java做:將Java哈希轉換爲C#並需要幫助瞭解Java
sb.append(Integer.toHexString((b & 0xFF) | 0x100).substring(1,3))
,如果這個C#線相當於
result += (Convert.ToInt32(b).ToString("x2") + " ").Substring(1,3);
在這兩種情況下,b是一個SHA-1散列字節代碼是循環。 我不明白的Java部分是((b & 0xFF)| 0x100)。它看起來像是填充它?
通常我會將Java應用程序的輸出與我的C#所生成的輸出進行比較,但我現在不在這樣做的情況下(並且令我沮喪 - 相信我)。
'&'是按位邏輯的「AND」,它會檢查比較下的變量的每一位,http://www.tutorialspoint.com/java/java_bitwise_operators_examples.htm – Xinus
從粗略讀取,0xAA將變成「1AA」 '在java中和''AA「'在C#中。但也許我錯過了一些東西。 –
b&0xFF將屏蔽最低字節,所以無論b是什麼,你都會得到0x00到0xFF之間的東西。在生成的整數中,無論以前是什麼,都會設置第9位。所以你會有0x0100到0x01FF之間的東西。從該字符串中,索引1到3的子字符串被裁剪。所以你最終會得到一個類似十六進制值在100和1FF之間的字符串。 – Fildor