在我的程序中,我正在查看一个字符串,我想知道它是否代表一个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()数字也将处理负面情况。
对于无符号值,这将起作用:
>>> 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)
| 归档时间: |
|
| 查看次数: |
25730 次 |
| 最近记录: |