一、什麼是16進制?
在計算機中,16進制是一種常用的數字表示方式。它是以16為基數,使用0至9和A至F共計16個符號來表示數碼。其中,A~F表示10~15,這樣做可以有效壓縮數字的長度,節約存儲空間。在16進制中,每個數字的位權分別為16的0次方、16的1次方、16的2次方……以此類推。
在Python中,我們可以使用多種方法將16進制數轉換為十進制數。比如,使用int()函數將16進制字符串轉換成整數,同時指定字符串是16進制:
hex_str = '4D5' dec_num = int(hex_str, 16) print(dec_num)
輸出結果為:
1237
二、Python中16進制的應用
1. 運算符
在Python中,我們可以使用16進制進行位運算。如下表所示,共有6個位運算符。
運算符 | 描述 | 示例 |
---|---|---|
& | 按位與 | 0xC3 & 0x3F=0x03 |
| | 按位或 | 0x60 | 0x1F=0x7F |
^ | 按位異或 | 0x5E ^ 0x3F=0x61 |
~ | 按位取反 | ~0x5E=0xA1 |
<< | 左移 | 0x0E << 2=0x38 |
>> | 右移 | 0xE0 >> 2=0x38 |
2. 字符串操作
在Python中,字符串可以通過hex()函數轉換為16進制格式。例如,將字符串”Hello World”轉換為16進制格式的字符串:
string = "Hello World" output = ''.join(format(ord(x), '02x') for x in string) print(output)
輸出結果為:
48656c6c6f20576f726c64
同時,我們也可以將16進制格式的字符串轉換為字符串。例如,將16進制格式的字符串”48656c6c6f20576f726c64″轉換為原始字符串:
hex_string = "48656c6c6f20576f726c64" output = bytes.fromhex(hex_string).decode('utf-8') print(output)
輸出結果為:
Hello World
3. 數據存儲
在Python中,我們可以使用struct庫對二進制數據進行封裝和解封裝操作。其中,pack()函數可以將數據按照指定的格式打包成位元組序列,而unpack()函數可以將位元組序列解封裝成原始數據。在使用pack()函數時,可以使用兩個字符的格式代碼來指定數據類型,如下表所示。
格式代碼 | 數據類型 |
---|---|
x | 空位元組 |
b/B | 有符號/無符號位元組型整數 |
h/H | 有符號/無符號短整型 |
i/I | 有符號/無符號整型 |
q/Q | 有符號/無符號長整型 |
f | 單精度浮點數 |
d | 雙精度浮點數 |
s | 字符串 |
例如,使用pack()函數將數字1、2和3以16進制格式打包成一個位元組序列:
import struct packed_data = struct.pack('BBB', 1, 2, 3) print(packed_data.hex())
輸出結果為:
010203
同時,我們也可以使用unpack()函數將位元組序列解封裝成原始數據。例如,解封裝剛才打包的位元組序列:
unpacked_data = struct.unpack('BBB', packed_data) print(unpacked_data)
輸出結果為:
(1, 2, 3)
三、總結
在Python編程中,16進制是一種常用的數字表示方式,可以在位運算、字符串操作和數據存儲中發揮重要作用。在實際應用中,我們常需要將十進制數轉換成16進制數或者將16進制數轉換成十進制數,使用Python的內置函數可以輕鬆實現這一功能。同時,我們通過代碼示例介紹了Python中使用16進制進行位運算、字符串操作和數據存儲的方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/195933.html