Python – 元組與位元組整數的相互轉換


元組是有序的、有限的用於收集資料的序列。它可以用圓括號 () 表示。位元組整數是一個簡單的數字,沒有小數或分數值。在 Python 中,有一些內建函式,例如 from_bytes()、bytes()、unpack() 和 enumerate() 可用於元組與位元組整數的相互轉換。

語法

以下語法在示例中使用

from_bytes()

from_bytes() 是 Python 中的一個內建函式,它接受兩個特定引數

  • bytes() - bytes() 也是一個內建函式,它定義了不可變的整數序列。

  • byteorder - byteorder 確定整數表示,其值設定為 big。

bytes()

bytes() 是 Python 中的一個內建函式,它返回位元組物件。位元組物件是不可變的整數序列,範圍在 0-256 之間。

unpack()

unpack() 是 Python 的一個內建函式,它允許我們提供可迭代物件(如列表、集合等)的所有資料型別。

enumerate()

enumerate() 是 Python 中的一個內建函式,它跟蹤每個給定索引元素的特定迭代。

使用 from_bytes()

在下面的示例中,我們將首先將元組儲存在變數 tup_val 中。然後使用內建函式 from_bytes,它接受兩個引數 - bytes() 和 byteorder 來解決將元組轉換為位元組整數的問題,並將其儲存在變數 byte_int 中。最後,我們使用變數 byte_int 列印結果。

示例

tup_val = (45, 5, 55, 19, 20)
byte_int = int.from_bytes(bytes(tup_val), byteorder='big')
print("Conversion of tuple into byte integer:\n", byte_int)

輸出

 Conversion of tuple into byte integer:
 193361023764

使用 Struct 模組

在下面的示例中,程式使用 struct 模組來更改元組到位元組整數的轉換。然後在變數 tuple_val 中建立元組。接下來,使用帶有 struct 模組的內建函式 unpack(),它接受引數:

  • !i - 該值應表示為單個帶符號位元組或最低有效位元組。

  • struct.pack('!BBBB', *tuple_val) - struct 是模組的名稱,它與內建函式 pack() 相關聯,該函式打包了 4 個無符號位元組。無符號位元組的值範圍在 0-255 之間。

最後,我們使用變數 byte_int 列印結果。

示例

import struct
tuple_val = (10, 20, 30, 40)
byte_int = struct.unpack('!i', struct.pack('!BBBB', *tuple_val))[0]
print("Conversion of tuple into byte integer:\n", byte_int)

輸出

 Conversion of tuple into byte integer:
 169090600

使用 enumerate() 函式

在下面的示例中,程式首先將元組元素儲存在變數 tuple_val 中。接下來,使用內建函式 sum() 和 enumerate() 計算元組位元組的轉換並生成結果。

示例

tuple_val = (45, 5, 55, 19, 20)
byte_int = sum((x << (8 * i)) for i, x in enumerate(tuple_val[::-1]))
print("Conversion of tuple into byte integer:\n", byte_int)

輸出

 Conversion of tuple into byte integer:
 193361023764

結論

我們討論了三種將元組元素轉換為位元組整數的不同方法。使用了各種內建方法,例如 enumerate()、unpack() 等,這些方法有助於設定特定的條件和操作。此程式的一些應用包括作業系統、數字程式碼等。

更新於:2023年8月16日

1K+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告