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

Posted

技术标签:

【中文标题】在python中将字符串转换为十六进制【英文标题】:convert string to hex in python 【发布时间】:2014-03-07 07:43:35 【问题描述】:

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

这行得通:

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

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

【问题讨论】:

class.function(119)class.function(0x77) 是完全等价的调用。 【参考方案1】:
>>> hex(119)
'0x77'
#or:
>>> hex(int("119"))
'0x77'

这应该适合你。

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

>>> hex(ord("a"))
'0x61'

【讨论】:

【参考方案2】:

我想你是说你从数据库中读取了一个字符串并且你想将它转换为一个整数,如果字符串有 0x 前缀你可以像这样转换它:

>>> print int("0x77", 16)
119

如果没有:

>>> print int("119")
119

【讨论】:

【参考方案3】:

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

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

即使print(0x77) 也会显示119(因为十进制是默认表示)。

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

 >>> int('0x77', 16)
 119

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

不过,在处理整数时存储整数会更好。

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

【讨论】:

如果您使用0作为int的第二个参数,它将正确转换十进制和十六进制值 @gnibbler 哇。哎呀,文档里就有,这是我第一次听说!

以上是关于在python中将字符串转换为十六进制的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将十六进制转换为十进制? [复制]

如何在 Python 中将字符串转换为十六进制整数?

在 Python 中将十六进制字符串转换为字节列表

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

如何在Python中将十六进制字符串转换为ObjectId [重复]

在Python 3中将十六进制字符串(python 2)转换为带有十六进制数字的字节