【发布时间】:2019-06-26 18:00:03
【问题描述】:
我正在尝试从位置 [7] 开始索引的 BLF 日志文件中提取可变长度的十六进制值。我可以成功提取列表中的可变长度“十六进制”值。 问题是从每个提取的列表中删除十六进制值之间的逗号。
下面是我从中提取可变长度十六进制值的 BLF 文件:
['Timestamp:', '1546626931.138813', 'ID:', '0764', 'S', 'DLC:', '8', '00', '00', '00', '00', '00', '00', '00', '00', 'Channel:', '0']
['Timestamp:', '1546626931.138954', 'ID:', '0365', 'S', 'DLC:', '8', '00', '00', '00', '80', 'db', '80', 'a2', '7f', 'Channel:', '1']
['Timestamp:', '1546626931.139053', 'ID:', '0765', 'S', 'DLC:', '6', 'ae', '05', '00', '00', '05', '00', 'Channel:', '1']
['Timestamp:', '1546626931.139697', 'ID:', '022a', 'S', 'DLC:', '4', '40', 'c0', '50', '6c', 'Channel:', '1']
.
.
.
.
我在文件中得到的输出如下:
['00', '00', '00', '00', '00', '00', '00', '00']
['00', '00', '00', '80', 'db', '80', 'a2', '7f']
['ae', '05', '00', '00', '05', '00']
['40', 'c0', '50', '6c']
但我想要的是首先从原始列表中删除逗号amd然后将下面显示的十六进制值转换为十进制:
['0000000000000000']
['00000080db80a27f']
['ae0500000500']
['40c0506c']
我的代码如下:
import can
import csv
import datetime
# import timestamp as timestamp
filename = open('C:\\Users\\xyz\\Downloads\\BLF File\\hex_Decimal.csv', "w")
log1 = can.BLFReader('C:\\Users\\xyz\\Downloads\\BLF File\\test.blf')
#Extracting Hexadecimal and convert into decimal
for time in log1:
time = str(time).split()
data=str(time[7:(7 + int(time[6]))])
"".join(data)
print(data)
我无法从列表中删除逗号并将十六进制数字列表转换为列表中的十进制值。任何帮助表示赞赏。谢谢!
【问题讨论】:
-
如果您在浏览器中搜索“字符串连接”和“将十六进制转换为十进制”,您会发现可以比我们在此处管理的更好地解释这一点的参考资料。
标签: python python-3.x type-conversion data-conversion