在python中将字符串转换为十六进制

Edy*_*elf 13 python hex converter

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

这有效:

addr = 0x77
value = class.function(addr)
Run Code Online (Sandbox Code Playgroud)

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

ber*_*eal 12

class.function期望一个整数,可以用十进制或十六进制文字表示,这样这两个调用是完全等价的:

class.function(0x77)
class.function(119)  # 0x77 == 119
Run Code Online (Sandbox Code Playgroud)

甚至print(0x77)会显示119(因为十进制是默认表示).

所以,我们应该讨论将字符串表示转换为整数.字符串可以是十六进制表示,如'0x77',然后使用base参数解析它:

 >>> int('0x77', 16)
 119
Run Code Online (Sandbox Code Playgroud)

或十进制,然后解析为int('119').

但是,只要处理整数,存储整数就更好了.

编辑:正如@gnibbler建议的那样,你可以解析as int(x, 0),它处理两种格式.

  • 如果使用`0`作为`int`的第二个参数,它将正确转换十进制和十六进制值 (2认同)

ice*_*ees 7

>>> hex(119)
'0x77'
#or:
>>> hex(int("119"))
'0x77'
Run Code Online (Sandbox Code Playgroud)

这应该适合你.

您还可以获取字符的十六进制表示:

>>> hex(ord("a"))
'0x61'
Run Code Online (Sandbox Code Playgroud)