如何在Python中把字符串转换为十六进制(附代码)

6,484 阅读2分钟

Hex 字符串有一个"0x "前缀。在Python中,如果你有一个"0x "前缀和一个有效的字符串,使用int(string, 0)方法来获得整数。提供0是为了告诉函数从前缀解释基数。

Python字符串到十六进制

要在Python 字符串转换成十六进制 ,可以使用hex()方法。 hex()是一个内置的方法,可以将整数转换为相应的十六进制字符串。

你可以使用int(x, base)函数与16转换字符串为整数。

hex()的语法

hex(n)

参数

hex()方法需要一个必要参数n:整数。

返回值

hex()方法将一个整数转换为相应的十六进制字符串形式的数字,并返回该数字。返回的十六进制字符串以前缀0x开始,表示它是十六进制格式。

将一个字符串转换为十六进制的例子

hex_string = "0xFF"

an_integer = int(hex_string, 16)

hex_value = hex(an_integer)
print(hex_value)

输出

0xff

你可以从输出中看到,返回的字符串是十六进制的,因为它以0xff开头。

带有对象的Python hex()

使用hex()方法将一个Python对象转换成哈希值。创建一个自定义类并定义**__index__()**函数,以便与它一起使用hex()函数:

class Ditto:
    no = 0

    def __index__(self):
        print('__index__ function called')
        return self.no


dt = Ditto()
dt.no = 19

print(hex(dt))

输出

__index__ function called
0x13

一个浮点数的十六进制表示

使用float.index() 方法将浮点数转换为十六进制。

number = 0.0
print(number, "in hex =", float.hex(number))

number = 19.5
print(number, "in hex =", float.hex(number))

输出

0.0 in hex = 0x0.0p+0
19.5 in hex = 0x1.3800000000000p+4

将字符串转换为十六进制的错误和异常情况

当整数类型常量以外的东西作为参数被传递时,hex()函数会抛出一个TypeError

hex_string = "0xFF"

hex_value = hex(hex_string)
print(hex_value)

输出

TypeError: 'str' object cannot be interpreted as an integer

你可以看到hex()函数总是期望一个整数,但它得到的是一个字符串,这就是为什么它抛出一个错误。

hex()方法用于所有的标准转换,比如将十六进制转换为十进制十六进制转换为八进制,以及十六进制转换为二进制

结论

要将一个十六进制字符串(例如:0xAD4)转换成一个十六进制数字,请使用hex()函数。 使用int() 函数,第二个参数为16,将十六进制字符串转换为整数。然后,使用hex()函数将其转换为十六进制数。

这篇文章就讲到这里。