2 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用列表理解將字符串?dāng)?shù)據(jù)轉(zhuǎn)換為整數(shù),然后轉(zhuǎn)換為字節(jié):
>>> lst = ['0x01','0xfe','0x02','0xff']
>>> d = bytes([int(x,0) for x in lst])
>>> d
b'\x01\xfe\x02\xff'
我假設(shè)您確實(shí)想要一個(gè)字節(jié)字符串,而不是 Unicode 字符串,因?yàn)樗雌饋?lái)像字節(jié)數(shù)據(jù)。
要?jiǎng)?chuàng)建顯示字符串,請(qǐng)格式化文字反斜杠并使用十六進(jìn)制值設(shè)置 x。您可以通過(guò)切片字符串來(lái)獲取十六進(jìn)制值0x,但為了格式一致性(例如兩位數(shù),小寫),您仍然可以轉(zhuǎn)換為整數(shù),然后使用格式字符串:
>>> lst = ['0x43','0xfe','0x02','0xff']
>>> bytes([int(x,0) for x in lst]) # actual byte string shows printable ASCII
b'C\xfe\x02\xff'
>>> d = ''.join([f'\\x{int(v,0):02x}' for v in lst]) # display string of hex escape codes
>>> d
'\\x43\\xfe\\x02\\xff'
>>> print(d)
\x43\xfe\x02\xff

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
我認(rèn)為你可以做這樣的事情。
print (''.join(['\\'+x for x in lst]))
其輸出將是:
\0x01\0xfe\0x02\0xff
如果你想刪除前導(dǎo) 0,那么你可以這樣做:
print((''.join(lst)).replace('0x',r'\x'))
它會(huì)給你:
\x01\xfe\x02\xff
添加回答
舉報(bào)