哈希返回负值

Hash returns negative value

本文关键字:返回 哈希      更新时间:2023-10-16

为什么返回负数?如何使返回值为正?

键盘输入:ABCD123

for(int a=0; a<keyInput.length(); a++){
        key = ((key << 5)+key)^keyInput[a];
    }
return key;

将'key'设为无符号类型,例如'unsigned int'。

它变为负数的原因是,对于有符号类型,高位表示符号。一旦哈希大于0x7FFFFFFF,符号位变为"1",值变为负数。无符号类型不使用符号位。太大的价值观仍然是积极的。

key声明为无符号长整数就可以了。