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

Rayven Esplanada 2023年1月30日
  1. Python 中初始化位元組文字
  2. 在 Python 中使用 hex() 方法將一個位元組轉換成十六進位制
  3. 在 Python 中使用 binascii 模組將一個位元組轉換為十六進位制
在 Python 中轉換位元組為十六進位制

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

Python 中的位元組資料型別是一個位元組序列,它可以作為一個變數儲存在磁碟上,然後可以對其進行編碼和解碼。它們像字串一樣被宣告,但字首是字元 b。位元組接受特殊的 Unicode 字元,字首為\x

Python 中初始化位元組文字

我們會給出一個位元組文字的例子,宣告一個帶有特殊字元的字串,並使用函式 encode('utf-8') 將其轉換為位元組文字。

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print(byte_var)

輸出:

b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'

encode() 的輸出結果將是一個以字元 b 為字首的位元組文字和特殊字元轉換為 Unicode 符號。

現在一個位元組的宣告已經完成,讓我們繼續將一個位元組轉換成十六進位制。

在 Python 中使用 hex() 方法將一個位元組轉換成十六進位制

從 Python 3.5 引入的 hex() 方法將其轉換為十六進位制字串。

在這種情況下,引數將是要轉換為十六進位制的位元組資料型別。

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print("Byte variable: ", byte_var)
print("Hexadecimal: ", byte_var.hex())

輸出:

Byte variable:  b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal:  ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274

在 Python 中使用 binascii 模組將一個位元組轉換為十六進位制

Python binascii 模組包含了二進位制和 ASCII 操作的高效實用函式。

在這個模組中,有一個函式 hexlify(),它返回給定引數的十六進位制值,即二進位制值。

在這個例子中,引數將是要轉換為十六進位制的位元組變數。

import binascii

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print("Byte variable: ", byte_var)
print("Hexadecimal: ", binascii.hexlify(byte_var))

輸出:

Byte variable:  b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal:  b'ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274'

請注意,hexlify() 的返回值是一個位元組文字,與 hex() 不同,後者返回一個轉換後的字串。

如果你想把結果轉換成字串,使用函式 decode('utf-8')

import binascii

byte_var = "γιαούρτι - yogurt".encode("utf-8")

print("Byte variable: ", byte_var)
print("Hexadecimal: ", "" + binascii.hexlify(byte_var).decode("utf-8"))

輸出:

Byte variable:  b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal:  ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274

現在十六進位制的結果已經從一個位元組文字轉換成了一個字串。

綜上所述,我們已經介紹了在 Python 中把一個位元組轉換成十六進位制的 2 種方法。最簡單的方法是使用內建的函式 hex() 將一個位元組文字轉換為十六進位制。另外,也可以使用 binascii 模組中的 hexlify() 函式來產生同樣的輸出。

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