簡體   English   中英

如何在Java中將字節值視為int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM