有这段代码:
print isinstance(2147483647, int) # True - max signed 32-bit integer
print isinstance(4294967295, int) # False - max unsigned 32-bit integer
print isinstance(18446744073709551615, int) # False - max unsigned 64-bit integer
如何检查值是否为无符号32位整数和无符号64位整数?
答案 0 :(得分:5)
如果您只想检查数字是否适合32位整数或64位整数,则可以使用一种名为bit-length
的方法来检查并确定结果是否小于32。< / p>
对于前。
>>> def Is32or64(x):
return 32 if x.bit_length() < 32 else 64
>>> Is32or64(2**30)
32
>>> Is32or64(2**40)
64
答案 1 :(得分:2)
您无法检查无符号整数类型,因为没有无符号整数类型。
Python 2有两种类型的整数:int
(固定范围,平台相关,至少32位)和long
(无限大整数)。两者都签了。
在您的示例中,第一个值的类型为int
,另外两个值为long
。如果您想知道某个值是否适合64位整数的范围,请进行普通比较:
if (x >= 0) and (x < 2**64):
pass
从Python版本2.7和3.1开始,有int.bit_length()
方法计算数字的二进制表示有多少位,忽略符号。
答案 2 :(得分:0)
您可以使用2**x
:
2147483647 == 2**32
18446744073709551615 == 2**64