Python 字节流处理

2017-09-10 22:27:25 +08:00
 MrgHOST

语言:python

问题:通过 socket 收到 b'\x7d\x76\x76\x76\x76\x76\x76\x76\x[XOR]\x7d'

我该如何去处理这串 bytes。

1 )在 recv 中找到 0x7e 2 )校验 3 )进一步处理

python 不像 c 那么好处理字节流。 求大神赐教

4535 次点击
所在节点    Python
11 条回复
MrgHOST
2017-09-10 22:28:28 +08:00
c 语言可以用 byte*。但 python 我想不出怎么处理
pepesii
2017-09-10 22:48:59 +08:00
est
2017-09-10 23:38:30 +08:00
> python 不像 c 那么好处理字节流。

那就用 C 啊。
junzki
2017-09-11 11:47:20 +08:00
C 语言怎么写,Python 也用相同的写法。拿 Python 的 byte 当 C 语言的 char* 用就好了。
NoAnyLove
2017-09-11 12:43:01 +08:00
没看懂你要做什么,排版看得头疼。。。。。如果收到的数据有固定的结构或者头部,用 struct 根据 field 来拆。如果没有固定的格式,依赖特殊的 magic number,那么无论是 bytes 还是 bytearray 都是可以 find 或者 index 的。

一句话来说,用 Python 处理数据绝对比用 C 简单啊
ryd994
2017-09-11 14:19:22 +08:00
@NoAnyLove 定长数据结构在 C 里可以用 union 和 struct 很方便的操作
只有一个不定长内容在尾部的,也可以
BBCCBB
2017-09-11 14:34:40 +08:00
python3 调用`bytes`的`decode()`方法可以转成`str`,`str`调用`encode()`方法可以转成`bytes`, 问的是这个??
BBCCBB
2017-09-11 14:36:20 +08:00
而且 python 的 bytes 类型也有 find 这种方法
goofool
2017-09-11 16:16:50 +08:00
struct + memoryview
MrgHOST
2017-09-11 18:37:36 +08:00
@goofool 很受启发 谢谢
MrgHOST
2017-09-11 18:38:30 +08:00
@all。 也谢谢各位

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

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

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

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

© 2021 V2EX