哈希返回负值
Hash returns negative value
为什么返回负数?如何使返回值为正?
键盘输入:ABCD123
for(int a=0; a<keyInput.length(); a++){
key = ((key << 5)+key)^keyInput[a];
}
return key;
将'key'设为无符号类型,例如'unsigned int
'。
它变为负数的原因是,对于有符号类型,高位表示符号。一旦哈希大于0x7FFFFFFF,符号位变为"1",值变为负数。无符号类型不使用符号位。太大的价值观仍然是积极的。
将key
声明为无符号长整数就可以了。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- Qt5 哈希函数在 Windows 7 和 Windows10 上不会返回相同的哈希
- 为什么C++哈希函数的返回类型是 std::size_t,而不是独立于平台的类型?
- 删除为应该在哈希表中的记录返回 false 的函数
- C - 哈希算法代码什么都没有返回
- 在C++中返回简单哈希码的函数
- boost::hash/std::tr1::hash 不为复制的 const char* 返回相同的哈希
- 返回错误值的双哈希函数
- SHA1在C++中返回长度不正确的哈希
- 可以返回基于字符串的整数范围的哈希函数
- 返回哈希表的大小
- 如何在c++代码中返回字符串的md5哈希值
- unordered_map哈希函数返回
- 哈希表:当第二个哈希函数返回表大小的倍数时,使用双哈希
- HMAC-SHA1不返回期望的哈希值
- 返回c++哈希表代码中的空迭代器
- 哈希表作为c++中函数的返回类型
- 为什么哈希函数返回size_t,以及如何使用它
- 哈希返回负值
- std::unordered_multiset::find函数是否返回具有相同哈希值的两个值之间的第一个插入元素