在 Python 中轉換十六進位制為位元組

Rayven Esplanada 2023年1月30日 2020年12月19日
  1. 初始化一個十六進位制值
  2. Python 中使用 bytes.fromhex() 把十六進位制轉換為位元組
  3. Python 中使用 unhexlify 模組將十六進位制轉換為位元組
在 Python 中轉換十六進位制為位元組

本教程將介紹如何在 Python 中把十六進位制值轉換為位元組文字。

十六進位制或十六進位制值是由 16 個符號組成的數字表示,而不是十進位制值中通常的 10 個符號。從 0 到 9 的數字和從 ae 的字元組成了 16 個十六進位制符號。

例如,數字 1000 的十六進位制轉換是 3E8

初始化一個十六進位制值

讓我們使用一個字串建立一個十六進位制值,並使用 binascii 模組中的函式 hexlify() 將短語 A quick brown fox 轉換為十六進位制值。

另外,要將一個字串轉換成十六進位制,我們需要將字串轉換成一個位元組,才能夠將其轉換成十六進位制。

import binascii
str_val = 'A quick brown fox'.encode('utf-8')
hex_val = binascii.hexlify(str_val).decode('utf-8')

print(hex_val)

輸出:

4120717569636b2062726f776e20666f78

現在我們已經成功地將一個字串轉換為十六進位制,讓我們繼續研究如何將一個十六進位制轉換為一個位元組。

Python 中使用 bytes.fromhex() 把十六進位制轉換為位元組

函式 bytes.fromhex() 接受一個單一的十六進位制值引數,並將其轉換為一個位元組文字。

從前面的結果中獲取十六進位制值,使用 fromhex() 將其轉換為位元組文字。

hex_val = '4120717569636b2062726f776e20666f78'

print(bytes.fromhex(hex_val))

輸出:

Byte value:  b'A quick brown fox'

結果將輸出 bytes 字面量,也就是將短語轉換為十六進位制,並以字母 b 為字首,指定該值是一個位元組字樣。

Python 中使用 unhexlify 模組將十六進位制轉換為位元組

Python binascii 模組包含了二進位制和 ASCII 操作的高效實用函式。unhexlify()binascii 模組中的一個函式,它將一個十六進位制值轉換為一個位元組文字。

讓我們用特殊的非 ASCII 字元初始化一個新的例子,然後將其轉換為十六進位制值。這個例子是短語 a quick brown fox 的希臘語翻譯。

import binascii
from binascii import unhexlify

str_val = 'Μια γρήγορη καφέ αλεπού'.encode('utf-8') #A quick brown fox in Greek translation
hex_val = binascii.hexlify(str_val).decode('utf-8')

print('String value: ', str_val.decode('utf-8'))
print('Hexadecimal: ', hex_val)
print('Byte value: ', unhexlify(hex_val))

輸出:

String value:  Μια γρήγορη καφέ αλεπού
Hexadecimal:  ce9cceb9ceb120ceb3cf81ceaeceb3cebfcf81ceb720cebaceb1cf86cead20ceb1cebbceb5cf80cebfcf8d
Byte value:  b'\xce\x9c\xce\xb9\xce\xb1 \xce\xb3\xcf\x81\xce\xae\xce\xb3\xce\xbf\xcf\x81\xce\xb7 \xce\xba\xce\xb1\xcf\x86\xce\xad \xce\xb1\xce\xbb\xce\xb5\xcf\x80\xce\xbf\xcf\x8d'

現在我們已經成功地將十六進位制值轉換為位元組。

在這篇文章中,我們已經介紹了在 Python 中使用 fromhex()binascii.unhexlify() 將十六進位制值轉換為位元組字面。如果你不想在你的原始碼中增加匯入,最好使用 fromhex()。否則,兩個函式將提供相同的輸出。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相關文章 - Python Bytes

相關文章 - Python Hex