Python Socket 问题

2019-06-18 15:31:05 +08:00
 brucecobb
我用 UDP 发送的时候明明就是发送是 16 进制的字节数据,如下:
-------
\x68\x74\x74\x70\x3A\x2F\x2F\x65\x77\x61\x74\x63\x68\x2E\x73\x63\x69\x66\x69\x6E\x65\x2E\x63\x6E\x2F\x61\x70\x69\x2F\x76\x31\x2E\x30\x2E\x30\x2F\x75\x70\x64\x61\x74\x65
-------
在 recvfrom 数据的时候:就是给我直接转换成字母了,我就要原生的数据咋办?
2033 次点击
所在节点    Python
8 条回复
hmxxmh
2019-06-18 15:49:06 +08:00
编码解码问题吧
codechaser
2019-06-18 15:49:41 +08:00
在转成 16 进制😏
ipwx
2019-06-18 15:51:04 +08:00
Python 2 ?

'\x68' 本来就是 'h' 啊。这俩完全等价,你还想怎么样?
brucecobb
2019-06-18 16:14:50 +08:00
@ipwx 我用的 python3,感谢您的回复,问题是这样的,这个数据里面有隐藏的信息要提取,第一:这个数据就要 16 进制的,不要转成字母,第二:我转回 16 进制之后\x 就没了,如果没有\x,我怎么区分\x68\x74 还是\x6874。
brucecobb
2019-06-18 16:15:08 +08:00
我用的 python3,感谢您的回复,问题是这样的,这个数据里面有隐藏的信息要提取,第一:这个数据就要 16 进制的,不要转成字母,第二:我转回 16 进制之后\x 就没了,如果没有\x,我怎么区分\x68\x74 还是\x6874。 @codechaser
BingoXuan
2019-06-18 17:01:08 +08:00
[hex(ord(x)) for x in your_data]
linw1995
2019-06-18 19:22:04 +08:00
不用 struct.unpack ?
no1xsyzy
2019-06-18 20:31:01 +08:00
@brucecobb 你到底是 bytes 还是 unicode ?
bytes 的话不存在 \x???? 这种四位的。并且 b'\x68' == b'h',在内存中是一样的,只是表达方式( repr )的不同。
还是说你想要传的数据应该是 rb'\x68'?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575127

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX