![](/img/trans.png)
[英]How to determine whether the number is 32-bit or 64-bit integer in Python?
[英]How do I check if a number is a 32-bit integer using Python?
在我的程序中,我正在查看一个字符串,我想知道它是否代表 32 位 integer。
目前我首先使用isdigit()
检查它是否是一个数字,然后我检查它是否超过 2^32 的值(假设我不关心无符号值)。
检查我的输入字符串是否包含有效的 32 位 integer 的最佳方法是什么?
只是另一个想法,看看值是否可以打包成 4 个字节:
>>> from struct import pack, error
>>> def test_32bit(n):
... try:
... pack("i", n)
... except error:
... return False
... return True
...
如果使用无符号值,则改为pack("I", n)
。
>>> def is_int32(number):
... try:
... return not(int(number)>>32)
... except ValueError:
... return False
对于无符号值,这将起作用:
>>> def is32(n):
... try:
... bitstring=bin(n)
... except (TypeError, ValueError):
... return False
...
... if len(bin(n)[2:]) <=32:
... return True
... else:
... return False
...
>>> is32(2**32)
False
>>> is32(2**32-1)
True
>>> is32('abc')
False
简单的解决方案将是这样的
if abs(number) < 2**31 and number != 2**31 - 1:
return True
else:
return False
如果我们的数字在[−2^31, 2^31 − 1]
范围内,我们很高兴
>>> def is_32_bit(n: int) -> bool: ... if n in range(-2 ** 31, (2**31) - 1): ... return True ... return False ... >>> is_32_bit(9999999999) False >>> is_32_bit(1) True
我们可以使用左移运算符来应用检查。
def check_32_bit(n):
return n<1<<31
在这里找到答案: https://docs.python.org/2/library/stdtypes.html#int.bit_length
我认为最简单有效的解决方案
>>> your_num = 2147483651
>>> your_num.bit_length()
32
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.