[英]How to treat the byte value as int in java
我正在嘗試手動進行字符串的哈希碼計算,因為它說字符串哈希碼的公式為“ s [0] * 31 ^(n-1)+ s [1] * 31 ^(n-2)+ ... + s [n-1]“,如下
public static void main(String[] args) {
String str1 = new String("A");
double hc = 0;
for (int i = 0; i < str1.length(); i++) {
int iv = (byte) str1.charAt(i);
hc = hc + Math.pow((iv * 31), (str1.length() - 1 - i));
}
System.out.println(hc); // 1.0
System.out.println(str1.hashCode()); // 65
}
“ hc”的值是1.0,因為java按照規則將byte轉換為int值。 但我正在尋找的答案是65。如何將字節值原樣復制到int變量。
所以從遠處看,我在功能上會出錯,這是我的意思:
Math.pow((iv * 31), (str1.length() - 1 - i))
等於=>(65 * 31)^(1 [str.lenght]-1-0 [i value])
給出類似(65 * 31)^ 0的東西給出1的東西,但是您正在尋找表達式65 *(31 ^ 0)[結論]因此,該函數應如下所示
Math.pow((31), (str1.length() - 1 - i)) * iv
我想給65
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.