1

この udp パケットを分割しようとしていますが、"xx ff" を連結する特定のパケットが必要です

0000  xx ff 3a 31 89 c3 ff 00 58 00 20 41 aa aa 03 00   >.:1....X. A....
0010  02 de 01 11 05 00 02 00 00 ff 3c ff 00 00 34 2d   .........K<....-
0020  00 44 00 00 00 00 00 00 0a x3 00 01 00 60 00 00   ................
0030  00 00 89 70 62 00 02 00 00 76 98 05 8b            ..i.b....v...

それで:

if '0  ' in line:print line;
    line = line.split('0  ')[1]

収量:

0000  xx ff 3a 31 89 c3 ff 00 58 00 20 41 aa aa 03 0   >.:1....X. A....
0010  02 de 01 11 05 00 02 00 00 ff 3c ff 00 00 34 2d   .........K<....-
0020  00 44 00 00 00 00 00 00 0a x3 00 01 00 60 00 0   ................
0030  00 00 89 70 62 00 02 00 00 76 98 05 8b            ..i.b....v...\

各行に末尾のゼロがありません

4

2 に答える 2

1

複数回出現する文字列で行を分割しています。ノート:

>>> s = "0000  xx ff 3a 31 89 c3 ff 00 58 00 20 41 aa aa 03 0   >.:1....X. A...."
>>> s.split("0  ")
['000', 'xx ff 3a 31 89 c3 ff 00 58 00 20 41 aa aa 03 ', ' >.:1....X. A....']

文字列を分割すると、分割した文字列は結果のリスト要素に含まれません。この場合、最初の出現でのみ分割するように制限できます。

>>> s.split("0  ", maxsplit=1)
['000', 'xx ff 3a 31 89 c3 ff 00 58 00 20 41 aa aa 03 0   >.:1....X. A....']

リストの 2 番目の要素にはまだ ASCII ダンプ セクションが含まれているため、これはまだ希望どおりではない可能性があります。その場合、おそらく、16 進ダンプと ASCII ダンプの間に現れる複数のスペースで再度分割する必要があります。

于 2013-09-11T23:18:16.787 に答える