如何转换包含混合十六进制字符的python字节字符串?

2024-04-27 04:09:23 发布

您现在位置:Python中文网/ 问答频道 /正文

具体地说,我从TCP套接字接收字节流,如下所示:

inc_tcp_data = b'\x02hello\x1cthisisthedata'

使用十六进制值表示传入数据的不同部分的流。但是,我希望使用以下格式的inc_数据:

^{pr2}$

基本上我想去掉b,然后直接吐出来。在

我试过各种各样的解包结构方法以及.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")对这些部分进行了解码,结果一切都很好。在

我只是在更新这个如果它碰巧帮助了其他人。在


Tags: 数据datalen字节格式ascii解码字符