Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将字节值视为int_Java_String_Hashcode - Fatal编程技术网

如何在java中将字节值视为int

如何在java中将字节值视为int,java,string,hashcode,Java,String,Hashcode,我试图手动计算字符串的hashcode,因为字符串hashcode的公式是“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++) {

我试图手动计算字符串的hashcode,因为字符串hashcode的公式是“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
    }
publicstaticvoidmain(字符串[]args){
字符串str1=新字符串(“A”);
双hc=0;
对于(int i=0;i
“hc”的值为1.0,因为java根据规则将字节转换为int值。 但我要找的答案是65。
如何将字节值按原样复制到int变量。

到目前为止,我看到你在函数中犯了错误,我的意思是:

Math.pow((iv * 31), (str1.length() - 1 - i)) 
等于=>(65*31)^(1[str.lenght]-1-0[i值])

什么给出了(65*31)^0,什么给出了1,但是你在寻找表达式65*(31^0)[总结]所以函数应该是这样的

Math.pow((31), (str1.length() - 1 - i)) * iv 

我想我将给出65

提示:在IDE中按Ctrl键或Cmd键单击
hashCode()
,这将引导您找到它的源代码。你会得到答案的。它没有说字符被转换成字节。你为什么这么做?也许你认为字符串是由字节组成的?它们不是,它们是由16位宽的
字符组成的
您只需执行
String str1=“A”
@JBNizet我想手动编写代码,基本上想知道“如何将字节值原样复制到int变量。”。我没有在源代码中找到它。谢谢教授,我应该清楚地表明,
String str1=“A”
只是一个更清晰、更高效代码的建议,而不是解决问题的答案。