1
我對Python不熟悉,我需要將端口從2.7更改爲3.5。 在2.7:從Python 2.7到Python 3.5端口unhexlify
>>> unhexlify('2FE2')[0]
'/'
在3.5:
>>> str(unhexlify('2FE2'))[0]
'b'
或:
>>> unhexlify('2FE2')[0]
47
我已經嘗試使用
>>> bytes.fromhex('2FE2')[0]
47
>>> decode_hex('2FE2')[0][0]
47
我只是不能得到正確ascii。我碰到Python使用表示:B」 ...或總是得到一個int
由於
從我所看到的,Python 3的對象中的「類型增加「在索引0上,因此」b「標識一個字節數組。我的理解是否正確?如果是這樣,爲什麼,對我沒有意義。 切片只是刪除「B」?我很困惑 –
@TheSingularity_:你正在混淆字符串文字符號。你可以用'b'...''文字符號創建一個'bytes'對象,所以'bytes([102,111,111])'和'b'foo''產生相同的值。當你在這個對象上使用'repr()'或'str()',或者在使用'repr()'和'str()'的一個對象上使用'print'分別),那麼Python會爲您生成'b'....''語法,因此您可以輕鬆地重現該值。只需複製輸出,將其粘貼到Python代碼中,然後再次擁有相同的內容。 –
@TheSingularity_:所有*語法*然而。切片適用於*值*,而不是語法。 'b'和引號不是價值的一部分。所以'bytesobject [:1]'將會創建一個新的'bytes'對象,其中包含片段指示的字節。對於返回'b'f''的'b'foo',即第一個字節。 –