【问题标题】:ValueError when using long() in Python在 Python 中使用 long() 时出现 ValueError
【发布时间】:2018-02-07 01:02:44
【问题描述】:

所以当我跑步时:

value = long("00000000000000020000000000000002", 16)

我明白了:

ValueError: Value out of range: 36893488147419103234

我认为是因为 long 不能取这么大的十六进制数,但我不确定。

实际上,我正在遍历包含大量非常大的十六进制数字的文件,但这只是我尝试解析的十六进制数字之一的示例。

我尝试使用lstrip() 删除一些 0,但对错误没有影响。

我做错了什么?

【问题讨论】:

  • 无法在 2.7.13 上复制更长的数字。
  • 仅供参考,在 Python 3 中 value = int("00000000000000020000000000000002", 16) 运行良好(int 替换了 Python 2 的 long)。
  • 我也无法在 python2.7.12 上复制。你具体用的是什么版本?你确定ValueError 没有在处理的某个步骤发出吗?
  • @rikg09 试试这个repl.it/languages/python
  • 无法在 Python 2.7.5 上重现。

标签: python python-2.7 long-integer


【解决方案1】:

错误是由我试图为其赋值的变量引起的,而不是实际的 long() 函数。

【讨论】:

  • 不正确。对名称的简单赋值不会引发值错误。
  • 我在提出问题之前简化了代码。实际上,我试图将数字分配给一个 protobuff 字段(不确定这是否是正确的名称),它不是用来取这样的数字的。一旦我切换到仅将其分配给 python var,就不会发生错误。最后我意识到我什至不需要将号码存储在那里,所以最后我并不重要......对不起所有的混乱
猜你喜欢
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2015-01-30
相关资源
最近更新 更多