一、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/zh-hk/n/155222.html