python-ValueError : invalid literal for int() with base 2

标签 python runtime-error

我在以下几行中遇到错误。错误不会重复出现,但有时会出现

x,y are huge numbers of 2048 bits
z=bin(x)+bin(y)
z=int(z,2)

ValueError: invalid literal for int() with base 2: '10010101101001011011000000001111001110111110000100101000000011111111100000111010111011101111110010001101101001101000100000001100010011000010100000110100100001010110011111101101000101101001011001100110'

最佳答案

您确定您没有伪造该错误消息吗?

代码...

>>> int('10010101101001011011000000001111001110111110000100101000000011111111100000111010111011101111110010001101101001101000100000001100010011000010100000110100100001010110011111101101000101101001011001100110', 2)
939350809951131205472627037306557272273273866819979105965670L

...适合我。

并且,您的代码的具体示例...

>>> x = 82349832
>>> y = 23432984
>>> z = bin(x) + bin(y)
>>> int(z, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '0b1001110100010001111000010000b1011001011000111100011000'

...在错误消息中显示问题(即 0b 前缀)。

解决方案是用...去除前缀

z = bin(x)[2:] + bin(y)[2:]
z = int(z, 2)

...或者,正如 Martijn Pieters 所建议的那样,使用 format()...

生成不带前缀的二进制表示
z = format(x, 'b') + format(y, 'b')
z = int(z, 2)

...或者,正如 gnibbler 建议的那样,使用字符串对象的 format() 方法在一次调用中完成...

z = '{:b}{:b}'.format(x, y)
z = int(z, 2)

关于python-ValueError : invalid literal for int() with base 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563805/

相关文章:

java.lang.RuntimeException : Unable to start activity

java - 线程中的异常 "main"java.lang.NoclassDefFoundError : cal/class

Python isDisjoint() 运行时

python - 使用 Python 正则表达式按后缀拆分

python - Docker - Ubuntu 中的主管抛出 ENOEXEC 错误

c++ - OpenCV 奇怪的内存损坏

swift - 其他场景调用时"unexpectedly found nil while unwrapping an Optional value"

c++ - Qt Release build 给出 MSVC++ Runtime Library Error

python - 在 Python 中监听连接时接收命令行输入

python - 在列表中的列表中查找项目