簡體   English   中英

如何轉換包含混合十六進制字符的python字節字符串?

[英]How to convert python byte string containing a mix of hex characters?

具體來說,我正在從TCP套接字接收字節流,看起來像這樣:

inc_tcp_data = b'\x02hello\x1cthisisthedata'

使用十六進制值表示輸入數據的不同部分的流。 但是我想以以下格式使用inc_data:

converted_data = '\x02hello\x1cthisisthedata'

本質上,我想擺脫b並從字面上吐出來。

我已經嘗試了各種struct.unpack方法以及.decode(“ encoding)。我根本無法使前者正常工作,如果沒有可視化的方式對其進行編碼,后者將去除十六進制值可以將其轉換為字符,有什么想法嗎?

更新:

我可以使用以下代碼獲得所需的結果:

inc_tcp_data = b'\x02hello\x3Fthisisthedata'.decode("ascii")


d = repr(inc_tcp_data)

print(d)
print(len(d))
print(len(inc_tcp_data))

輸出為:

'\x02hello?thisisthedata'
25
20

但是,這仍然無濟於事,因為我確實需要以下正則表達式將\\ x02視為十六進制值而不是4字節字符串。

我究竟做錯了什么?

更新

我已經解決了這個問題。 我希望十六進制字符保持不變的原因是為了使正則表達式能夠在以后進一步檢測到它。 但是,我應該做的事情就是更改正則表達式以分析字節而不解碼。 一旦我通過正則表達式將所有部分分離出來,我便使用.decode("ascii")解碼了這些部分,並且一切工作都很好。

我只是在更新它,如果它碰巧可以幫助別人。

假設您正在使用python 3

>>> inc_tcp_data.decode('ascii')
'\x02hello\x1cthisisthedata'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM