我想掩盖一些Python哈希值,当我检查不同哈希值的长度时,我感到很惊讶。
>>> import sys
>>> sys.getsizeof(hash(42))
14
>>> sys.getsizeof(hash("Hello World"))
16
>>> sys.getsizeof(hash("Lorem ipsum dolor sit amet, consectetur adipisicing elit"))
18
使用哈希函数返回固定大小的哈希值会更容易在位级别上使用它们。有可变长度的原因吗?是否有保证的最小长度?
答案 0 :(得分:3)
>>> sys.getsizeof(2**10)
14
>>> sys.getsizeof(2**20)
16
>>> sys.getsizeof(2**30)
18
hash
的返回值仅限于少量位(可能为64位),但int
大小的粒度小于此值,因此取决于确切的哈希值,sizeof
可能会有所不同。
正如评论已经指出的那样,这对于小提琴来说没有意义。对于按位运算符,(非负)数字用无限数量的零填充。