[英]How to define a binary string in Python in a way that works with both py2 and py3?
我正在編寫一個應該在Python 2和3中工作的模塊,我需要定義一個二進制字符串。
通常這會像data = b'abc'
但是這個代碼在Python 2.5上失敗,語法無效。
如何以適用於所有Python 2.5+版本的方式編寫上述代碼
注意:這必須是binary
(它可以包含任何類型的字符,0xFF),這非常重要。
如果字符串只有ASCII字符,請調用encode
。 這將為您提供Python 2中的str
(就像b'abc'
)和Python 3中的一個bytes
:
'abc'.encode('ascii')
如果沒有,不是將二進制數據放在源中,而是創建一個數據文件,用'rb'
打開它並從中讀取。
您可以存儲base64編碼的數據。
第一步是轉換為base64:
>>> import base64
>>> base64.b64encode(b"\x80\xFF")
b'gP8='
這將完成一次,使用b
或不使用取決於您使用的Python版本。
在第二步中,將此字節字符串放入沒有b
的程序中。 然后確保它在py2和py3中工作。
import base64
x = 'gP8='
base64.b64decode(x.encode("latin1"))
給你一個str
'\\x80\\xff'
在2.6(也應該在2.5中工作)和一個b'\\x80\\xff'
在3.x.
除了上述兩個步驟之外,您可以使用十六進制數據執行相同的操作
import binascii
x = '80FF'
binascii.unhexlify(x) # `bytes()` in 3.x, `str()` in 2.x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.