Python字符串到十六进制

ken*_*dyl 2 python string hex wrapper

所以,我一直在撞墙直到看起来应该是一个简单的数据转换.我在python中编写并将一个十六进制值传递给另一个模块,该值使用包装器转换为c类型uint_64t.问题是我通过python库argparse得到这个十六进制值.当它接受此值时,例如,让我们使用值0x3f,它将其保存为字符串.如果我尝试将其转换为int,则会抛出错误:

"ValueError: invalid literal for int() with base 10: '0x3f'"
Run Code Online (Sandbox Code Playgroud)

如果我创建一个变量hex = 0x3f但是,当我打印出来时,它给了我适当的整数值.(这是很好的,因为我正在创建一个uint)我很困惑如果转换不起作用如何从字符串转换为int.我已经看到很多关于将此字符串逐字母转换为十六进制值的示例(换句话说,将ascii字符串'0x3f'的每个字符都赋予它并给它一个十六进制值)但是我还没有找到一个示例我正在寻找的情况.如果我提出一些经常被回答的事情,我会道歉.

Kev*_*vin 5

尝试指定int在base 16中:

>>> int("0x3f", 16)
63
Run Code Online (Sandbox Code Playgroud)

您也可以使用ast.literal_eval,它应该能够读取任何可以用作整数文字的字符串.只要0x前缀存在,您甚至不必为此指定基数.

>>> import ast
>>> #hexadecimal
>>> ast.literal_eval("0x3f")
63
>>> #binary
>>> ast.literal_eval("0b01010")
10
>>> #octal
>>> ast.literal_eval("0712")
458
>>> #decimal
>>> ast.literal_eval("42")
42
Run Code Online (Sandbox Code Playgroud)