从二进制文件解码 python 中的字符串列表

Decoding String list in python from a binary file

我需要从二进制文件中读取字符串列表并创建一个 python 列表。

我正在使用以下命令从二进制文件中提取数据:

tmp = f.read(100) 
abc, = struct.unpack('100c',tmp) 

我在变量 'abc' 中看到的数据完全如下所示,但我需要将以下数据作为字符串放入 python 列表中。

我需要的数据列表:'UsrVal' 'VdetHC' 'VcupHC' ..... 'Gravity_Axis'

b'UsrVal\x00VdetHC\x00VcupHC\x00VdirHC\x00HdirHC\x00UpFlwHC\x00UxHC\x00UyHC\x00UzHC\x00VresHC\x00UxRP\x00UyRP\x00UzRP\x00VresRP\x00Gravity_Axis'

如果您在这里采用快速而混乱的方式,并假设您的字符串

b'UsrVal\x00VdetHC\x00VcupHC\x00VdirHC\x00HdirHC\x00UpFlwHC\x00UxHC\x00UyHC\x00UzHC\x00VresHC\x00UxRP\x00UyRP\x00UzRP\x00VresRP\x00Gravity_Axis'

实际上被解释为

" b'UsrVal\x00VdetHC\x00VcupHC\x00VdirHC\x00HdirHC\x00UpFlwHC\x00UxHC\x00UyHC\x00UzHC\x00VresHC\x00UxRP\x00UyRP\x00UzRP\x00VresRP\x00Gravity_Axis' "

然后下面几行代码的结果是 'b' 有你想要的数组。

a = {YourStringHere}
b = a[2:-1].split("\x00")

以下是我建议您使用一个衬垫的方法。

您需要解码二进制字符串,然后您可以根据 "\x00" 进行拆分,这将 return 您要查找的列表。

例如

my_binary_out = b'UsrVal\x00VdetHC\x00VcupHC\x00VdirHC\x00HdirHC\x00UpFlwHC\x00UxHC\x00UyHC\x00UzHC\x00VresHC\x00UxRP\x00UyRP\x00UzRP\x00VresRP\x00Gravity_Axis'
decoded_list = my_binary_out.decode("latin1", 'ignore').split('\x00')
#or 
decoded_list = my_binary_out.decode("cp1252", 'ignore').split('\x00')

输出 看起来像这样:

['UsrVal', 'VdetHC', 'VcupHC', 'VdirHC', 'HdirHC', 'UpFlwHC', 'UxHC', 'UyHC', 'UzHC', 'VresHC', 'UxRP', 'UyRP', 'UzRP', 'VresRP', 'Gravity_Axis']

希望对您有所帮助