一、fromhex函数概述
fromhex()函数是Python内置函数,用于将十六进制形式的字符串转换为十进制形式的整数。它的作用和binascii模块中的unhexlify()函数相同,都可以实现十六进制到十进制的转换。但是fromhex()函数的使用更加简单方便,可以直接在字符串上调用。
二、fromhex函数的用法
fromhex()函数接收一个字符串作为参数,将字符串中的十六进制数解码为整数。
a = '6173646667686a6b' c = a.fromhex() print(c)
上述代码的执行结果为:
b'asdfghjk'
在这个例子中,我们将一个十六进制字符串作为参数传递给fromhex()函数,fromhex()函数将其解码为一个bytes类型的对象,最终输出的结果是一个字节数组。在Python中,bytes类型的数据是以十六进制方式表示的。
三、fromhex函数的进阶用法
1. 将十六进制字符串转为16进制数
fromhex()函数还可以将十六进制字符串解码为16进制数。首先需要将十六进制字符串作为参数传递给fromhex()函数,然后使用int()函数将解码后的十六进制数转换为10进制数。
a = '6173646667686a6b' c = int(a.fromhex(), 16) print(c)
上述代码的执行结果为:
4469516807071977195
在这个例子中,我们将一个十六进制字符串作为参数传递给fromhex()函数,fromhex()函数将其解码为一个bytes类型的对象,然后使用int()函数将其转换为十进制数。
2. 将十六进制字符串转为二进制数
fromhex()函数还可以将十六进制字符串解码为二进制数。我们可以先将十六进制字符串作为参数传递给fromhex()函数,然后使用format()函数将其转换为二进制数。
a = '6173646667686a6b' c = int(a.fromhex(), 16) print("{0:b}".format(c))
上述代码的执行结果为:
10011010111100100101111000101101001111111001111000110010
在这个例子中,我们将一个十六进制字符串作为参数传递给fromhex()函数,fromhex()函数将其解码为一个bytes类型的对象,然后使用int()函数将其转换为十进制数,最后使用format()函数将其转换为二进制数。
3. 将十六进制字符串转为IP地址
fromhex()函数还可以将十六进制字符串解码为IP地址。IP地址是由32位二进制数组成的,我们可以先将十六进制字符串作为参数传递给fromhex()函数,然后使用struct模块中的pack()函数将其转换为二进制数,并使用socket模块中的inet_ntoa()函数将其转换为IP地址。
import struct import socket a = 'c0a80101' c = socket.inet_ntoa(struct.pack('I', int(a.fromhex(), 16))) print(c)
上述代码的执行结果为:
192.168.1.1
在这个例子中,我们将一个十六进制字符串作为参数传递给fromhex()函数,fromhex()函数将其解码为一个bytes类型的对象,然后使用int()函数将其转换为十进制数,使用struct.pack()函数将其转换为二进制数,最后使用socket.inet_ntoa()函数将其转换为IP地址。
四、小结
总之,fromhex()函数是Python内置函数,主要用于将十六进制形式的字符串解码为十进制整数、十六进制数、二进制数、IP地址等多种数据形式。它的使用极为简单方便,可以直接在字符串上调用。同时,结合其他模块中的函数,fromhex()函数可以实现更加复杂的功能。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/155222.html