语言:python
问题:通过 socket 收到 b'\x7d\x76\x76\x76\x76\x76\x76\x76\x[XOR]\x7d'
我该如何去处理这串 bytes。
1 )在 recv 中找到 0x7e 2 )校验 3 )进一步处理
python 不像 c 那么好处理字节流。 求大神赐教
1
MrgHOST OP c 语言可以用 byte*。但 python 我想不出怎么处理
|
2
pepesii 2017-09-10 22:48:59 +08:00
|
3
est 2017-09-10 23:38:30 +08:00
> python 不像 c 那么好处理字节流。
那就用 C 啊。 |
4
junzki 2017-09-11 11:47:20 +08:00
C 语言怎么写,Python 也用相同的写法。拿 Python 的 byte 当 C 语言的 char* 用就好了。
|
5
NoAnyLove 2017-09-11 12:43:01 +08:00
没看懂你要做什么,排版看得头疼。。。。。如果收到的数据有固定的结构或者头部,用 struct 根据 field 来拆。如果没有固定的格式,依赖特殊的 magic number,那么无论是 bytes 还是 bytearray 都是可以 find 或者 index 的。
一句话来说,用 Python 处理数据绝对比用 C 简单啊 |
6
ryd994 2017-09-11 14:19:22 +08:00
@NoAnyLove 定长数据结构在 C 里可以用 union 和 struct 很方便的操作
只有一个不定长内容在尾部的,也可以 |
7
BBCCBB 2017-09-11 14:34:40 +08:00
python3 调用`bytes`的`decode()`方法可以转成`str`,`str`调用`encode()`方法可以转成`bytes`, 问的是这个??
|
8
BBCCBB 2017-09-11 14:36:20 +08:00
而且 python 的 bytes 类型也有 find 这种方法
|
9
goofool 2017-09-11 16:16:50 +08:00 1
struct + memoryview
|