【问题标题】:invalid literal for int() python3.6int() python3.6的无效文字
【发布时间】:2018-09-26 22:28:51
【问题描述】:

我正在尝试在 python 3.6 中进行如下转换

my_str= 0000063C
int_addr = int(my_str, 16)

但我看到了这个错误: ValueError: int() 基数为 16 的无效文字:''

知道我在搞砸什么吗?

【问题讨论】:

  • 使用my_str="0000063C"
  • 您发布的代码会在无效的0000063C 令牌上产生 SyntaxError,而不是在 int 调用上产生 ValueError。
  • 我需要灵活地分配 my_str "any" 字符串。当我执行 print(type(my_str)) 时,我得到一个字符串。但我仍然看到错误:(

标签: python int


【解决方案1】:

请尝试:

my_str= "0000063C"
int_addr = int(my_str, 16)
print(int_addr)

当您有一个无法转换为 int 值的字符串时,就会发生您遇到的问题。例如,如果你运行这个:

my_str= "sdfsdf"
int_addr = int(my_str, 16)
print(int_addr)

你得到:

Traceback (most recent call last):  File "main.py", line 2, in <module>    int_addr = int(my_str, 16)
ValueError: invalid literal for int() with base 16: 'sdfsdf'

处理这种情况很重要,因为您在问题的一条评论中提到变量 my_str 需要保存任何字符串值。为了克服这个问题,您可以将转换包装在 try and catch 中,如下所示:

try:
    my_str= "sdfsdf"
    int_addr = int(my_str, 16)
    print(int_addr)
except ValueError:
    pass

您可以决定您的代码如何处理 ValueError 异常。我只是添加了关键字pass,但添加了针对您的具体情况的处理。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2018-03-13
    相关资源
    最近更新 更多