Python中的字节精度值?

时间:2010-06-25 19:31:14

标签: python byte precision

我在Python中有一个哈希函数。 它返回一个值。

如何查看此返回值的字节大小?我想知道它是4字节还是8或什么。

原因:

  • 我想确保最小值为0,最大值为2 ** 32,否则我的计算结果不正确。
  • 我想确保将它打包到I结构(unsigned int)是正确的。

更具体地说,我打电话给murmur.string_hash(`x`)。 我想知道健全性检查我得到一个4字节的无符号返回值。如果我有一个不同大小的值,他们的计算就搞砸了。所以我想要理智地检查它。

2 个答案:

答案 0 :(得分:1)

如果它是一个返回数字的任意函数,则只有4 standard types of numbers in Python:小整数(C long,至少 32位),长整数(“无限”精度),浮点数(C double)和复数。

如果您指的是builtin hash,它将返回一个标准整数(C long):

 >>> hash(2**31)
 -2147483648

如果您需要不同的哈希值,请查看hashlib

答案 1 :(得分:1)

通常,将返回值视为Python中的特定字节精度并不是最佳方法,尤其是对于整数。对于大多数意图和目的,Python“短”整数与“长”(无限)整数无缝集成。根据需要将变量从较小类型提升为较大类型以保持所需值。返回任何特定类型不需要函数(例如,相同的函数可以返回不同的数据类型,具体取决于输入)。

当一个函数由第三方软件包提供时(就像这个一样),你可以只信任文档(就我所知,Murmur指的是4字节整数)或者自己测试返回值在使用之前(无论是ifassert还是try,取决于您的偏好)。