我最近开始使用python/pyparsing来处理一个十六进制值字符串,我遇到了这个问题:考虑这个字符串:
string = "10020304059917368584304025326"
Run Code Online (Sandbox Code Playgroud)
我希望最终结果如下:
['10', '02', '03', ['04', '05', '9917365843'], ['04', '02', '5326']]
Run Code Online (Sandbox Code Playgroud)
假定04是一个标签,这意味着数据(相同的概念在ASN.1),和05是数据的大小.我没有看到如何在pyparsing代码上使用size变量.我能做的最好的事情是:
byte = Word(hexnums, exact=2)
process = byte + byte + byte + Word(hexnums)
newstring = process.parseString(string)
print (newstring.dump())
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
PS:在Hooked的帮助下,我的最终代码是:
from pyparsing import *
string = "10 02 03 04 05 99 17 36 58 43 04 02 53 26"
tag = Word(hexnums, exact=2)
size = Word(hexnums)
array = Group(tag + countedArray(size))
process = tag + tag + tag + ZeroOrMore(array)
newstring = process.parseString(string) …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 logrotate 根据大小旋转二进制文件,但该程序似乎不适用于二进制文件。就其价值而言,这是我用于此特定文件的配置:
<filepath> {
copytruncate
compress
missingok
size 10M
rotate 100
nomail
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一个可以处理二进制文件并具有与 logrotate 相同的基本功能的程序吗?