如何使用Python检查数字是否为32位整数?

use*_*069 10 python int

在我的程序中,我正在查看一个字符串,我想知道它是否代表一个32位整数.

目前我首先检查它是否是一个数字isdigit(),然后我检查它是否超过2 ^ 32的值(假设我不关心无符号值).

检查输入字符串是否包含有效的32位整数的最佳方法是什么?

小智 7

在这里找到答案:https ://docs.python.org/2/library/stdtypes.html#int.bit_length

我认为最简单且最有效的解决方案

>>> your_num = 2147483651
>>> your_num.bit_length()
32
Run Code Online (Sandbox Code Playgroud)


小智 5

假设最大的 32 位整数是0xffffffff

然后,我们需要检查我们的数字是否大于这个值:

abs(n) <= 0xffffffff
Run Code Online (Sandbox Code Playgroud)

环绕abs()数字也将处理负面情况。

  • 正负极限不一样,-2^31 和 2^31-1 (3认同)
  • 有符号整数的十六进制值为“0x7FFFFFFF” (2认同)

daw*_*awg 3

对于无符号值,这将起作用:

>>> 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
Run Code Online (Sandbox Code Playgroud)