我有一个脚本调用一个函数,该函数的参数采用十六进制数。参数必须是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)
,它处理两种格式。