我有一个脚本调用一个函数,该函数的参数采用十六进制数。参数必须是0x前缀。数据源是数据库表,存储为字符串,因此返回“0x77”。我正在寻找一种方法从数据库中获取字符串,并将其用作十六进制形式的参数,前缀为0x。
这项工作:

addr = 0x77
value = class.function(addr)

数据库条目必须是一个字符串,因为大多数其他记录在此列中没有十六进制值,但可以更改这些值以使其更容易,因此它可以是“119”,而不是“0x77”。

最佳答案

您的class.function需要一个整数,该整数可以用十进制或十六进制文字表示,因此这两个调用完全等效:

class.function(0x77)
class.function(119)  # 0x77 == 119

即使是print(0x77)也会显示119(因为十进制是默认表示)。
所以,我们应该讨论将字符串表示形式转换为整数。字符串可以是十六进制表示形式,如“0x77”,然后使用基参数对其进行分析:
 >>> int('0x77', 16)
 119

或者小数,然后将其解析为int('119')
不过,处理整数时存储整数更好。
编辑:正如@gnibler建议的那样,您可以解析为int(x, 0),它处理两种格式。

10-08 19:51