Python 中的位元組物件:超越數位轉換
在Python 中使用位元組物件時,必須了解bytes(n) 是如何轉換的函數與數值轉換不同。將整數 n 傳遞給 bytes(n) 不會傳回 n 的二進位表示形式,而是建立一個長度為 n 且填入有空位元組 (\x00) 的位元組字串。
行為背後的基本原則
此行為是在 Python 3.2 中引入的,作為防止從整數到位元組的意外轉換的一部分。以前,bytes(n) 會執行未記錄的整數到二進位表示形式的轉換,從而導致潛在問題。
為了解決這種歧義,bytes(n) 被重新定義以創建一個零填充的位元組字串,確保不會發生隱式轉換。需要整數的二進位表示形式的開發人員現在可以明確使用 to_bytes() 方法。
替代解決方案
為了以受控方式將整數轉換為字節,Python提供 int.to_bytes() 方法。此方法允許指定位元組順序(“大”或“小端”)以及結果位元組字串的所需長度。
此外,可以建立自訂輔助函數來促進此轉換:
def int_to_bytes(number: int) -> bytes:
"""Converts an integer to bytes representing its unsigned value."""
return number.to_bytes(length=(8 (number (number Optional[int]:
"""Converts a byte string to its corresponding signed integer value."""
return int.from_bytes(binary_data, byteorder='big', signed=True)
透過利用這些方法,開發人員可以自信地以符合其特定要求的方式將整數轉換為位元組。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3