我在Python中有一個散列函數。 它返回一個值。Python中的字節精度值?
如何查看此返回值的字節大小?我想知道它是4字節還是8字節或什麼。
原因:
- 我想確保的最小值爲0,最大值爲2 ** 32,否則我的計算是不正確的。
- 我想確保將它打包到I結構(無符號整數)是正確的。
更具體地說,我打電話給murmur.string_hash(`x`)
。 我想知道健康檢查,我得到一個4字節的無符號返回值。如果我有一個不同大小的值,他們的計算會搞砸。所以我想要理智檢查它。
我在Python中有一個散列函數。 它返回一個值。Python中的字節精度值?
如何查看此返回值的字節大小?我想知道它是4字節還是8字節或什麼。
原因:
更具體地說,我打電話給murmur.string_hash(`x`)
。 我想知道健康檢查,我得到一個4字節的無符號返回值。如果我有一個不同大小的值,他們的計算會搞砸。所以我想要理智檢查它。
如果它是一個返回數的任意函數,只有4 standard types of numbers in Python:小整數(C長,至少 32位),長整型(「無限」的精度),漂浮物(C雙鍵),和複數字。
如果你指的是builtin hash
,它返回一個標準的整數(C長):如果你想不同的散列
>>> hash(2**31)
-2147483648
,退房hashlib
。
通常,在Python中將返回值視爲特定的字節精度並不是最好的選擇,尤其是對於整數。對於大多數意圖和目的,Python「短」整數與「長」(無限)整數無縫集成。根據需要將變量從較小的類型提升到較大的類型以保持所需的值。函數不需要返回任何特定類型(例如,相同的函數可能會根據輸入返回不同的數據類型)。
當一個函數是由第三方包提供的(就像這個一樣),你可以直接相信文檔(據我所知Murmur表示4字節整數)或者測試返回值自己在使用之前(無論是通過if
,assert
還是try
,取決於您的偏好)。
不是*確切*重複,但在這裏看到:[如何確定在python中的對象的大小](http://stackoverflow.com/questions/449560/how-do-i-determine-the- Python中的對象大小) – Randolpho 2010-06-25 19:34:35
定義「字節大小」 – 2010-06-25 19:35:04
簡短回答:[sys.getsizeof](http://docs.python.org/library/sys.html#sys.getsizeof) – Randolpho 2010-06-25 19:35:28