语言: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 那么好处理字节流。 /td> 那就用 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 ![]() struct + memoryview |