近来遇到一个二进制文件需要进行解析,来源R&S公司开发的EMC32软件。
不知道具体的格式,但是通过进程监视和文件对比分析能解析一小部分,哪位大佬能帮忙做一下解析二进制文件?
二进制文件格式比较简单, 主要是格式转换有点麻烦,不知道有什么好的方法能处理呢。最好有处理的代码(IO实在是了解不多)
部分源码:
90 05 00 00 00 45 00 4D 00 43 00 33 00 32 00 9A
99 99 99 99 99 20 40 03 00 00 00 00 00 00 00 38
9C 7C 41 00 00 00 00 65 CD DD 41 4C 00 00 00 50
5B 3A 53 F4 95 09 00 65 6B 7F 95 09 00 C0 68 E2
6C 68 56 09 00 2D 4E 91 98 26 5E BD 5B 09 00 4B
6D CF 91 F6 65 F4 95 09 00 50 00 72 00 65 00 61
00 6D 00 70 00 0D 00 0A 00 33 00 30 00 20 00 4D
00 48 00 7A 00 20 00 2D 00 20 00 32 00 20 00 47
00 48 00 7A 00 09 00 36 00 30 00 20 00 6B 00 48
00 7A 00 09 00 50 00 4B 00 2B 00 09 00 31 00 32
00 30 00 20 00 6B 00 48 00 7A 00 09 00 2E 00 30
00 31 00 20 00 73 00 09 00 32 00 30 00 20 00 64
00 42 00 0D 00 0A 00 00 00 00 00 00 00 00 00 31
00 00 00 00 00 05 00 00 00 42 80 00 00 01 00 00
00 03 00 00 00 09 00 00 00 46 00 72 00 65 00 71
00 75 00 65 00 6E 00 63 00 79 00 03 00 00 00 4D
00 48 00 7A 00 00 00 00 00 80 84 2E 41 00 00 00
00 00 00 00 00 06 00 00 00 0B 00 00 00 00 00 00
00 00 00 00 00 00 00 E2 04 00 00 FF FF FF FF 09
00 00 00 50 00 4B 00 2B 00 5F 00 43 00 4C 00 52
00 57 00 52 00 06 00 00 00 64 00 42 00 BC 03 56
00 2F 00 6D 00 00 00 00 00 00 00 F0 3F 00 00 00
00 01 00 00 00 01 00 00 00 0D 00 00 00 00 00 00
00 06 00 00 00 00 00 A6 04 00 00 FF FF FF FF 02
00 00 00 D8 9A A6 5E 02 00 00 00 63 00 6D 00 7B
14 AE 47 E1 7A 84 3F 00 00 00 00 02 00 00 00 01
00 00 00 1D 00 00 00 00 00 00 00 00 00 00 00 00
00 30 02 00 00 FF FF FF FF 03 00 00 00 50 00 6F
00 6C 00 00 00 00 00 00 00 00 00 00 00 F0 3F 01
00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00
00 00 00 00 00 00 00 00 00 0D 02 00 00 FF FF FF
FF 05 00 00 00 43 00 6F 00 72 00 72 00 2E 00 04
00 00 00 64 00 42 00 2F 00 6D 00 00 00 00 00 00
00 F0 3F 00 00 00 00 03 00 00 00 01 00 00 00 26
00 00 00 00 00 00 00 00 00 00 00 00 00 A8 02 00
00 FF FF FF FF 02 00 00 00 07 59 E8 6C 00 00 00
00 00 00 00 00 00 00 F0 3F 01 00 00 00 01 00 00
00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00
00 00 00 94 02 00 00 FF FF FF FF 03 00 00 00 42
类似文件的解析结果
[FileInfo]
Author=EMC32
Version=8.3
MeasClass=4 EMI 传导
Start=9.000000000000E+3
Stop=29.99900000000E+6
Description=子区间 步长 检波器 中频带宽 测量时间 Preamp9 kHz - 149.999 kHz 100 Hz PK+ ; AVG 200 Hz .1 s 0 dB150 kHz - 29.999 MHz 4.5 kHz PK+ ; AVG 9 kHz .01 s 0 dB
[TableSettings]
TableType= 49 结果表格
IndicateDetector=0
Columns=5
Rows= 8046
SaveResolution=0
BandsOption=0
ResultType= 2
[TableHeader]
Name= Frequency PK+_CLRWR AVG_CLRWR Corr. 备注
Unit= MHz dBμA dBμA dB
ColTyp= 11 Frequency 13 Level 13 Level 38 RX Corr. 7 备注
Detector= 0 6 7 0 0
Intpol= 0 0 0 0 0
Format= 6 1 1 1 0
ColWidth= 1268 1160 1208 536 588
ColVisible= 1 1 1 1 1
ColReport= 1 1 1 1 1
[TableValues]
9.000000000000E-3 60.598014363E+0 42.139336272E+0 31.324035635E+0
9.100000000000E-3 59.640017998E+0 42.631386022E+0 31.232377686E+0
9.200000000000E-3 60.642411759E+0 41.552837484E+0 31.141721483E+0
9.300000000000E-3 52.829656143E+0 41.043933086E+0 31.052045366E+0
9.400000000000E-3 57.502024654E+0 42.943714845E+0 30.963328371E+0
9.500000000000E-3 60.892048435E+0 42.005355639E+0 30.875550197E+0
9.600000000000E-3 59.872523375E+0 39.834146712E+0 30.788691184E+0
9.700000000000E-3 53.328579692E+0 40.329391395E+0 30.702732280E+0
通过分析可知,二进制文件的存储是按上面内容逐个写入的,只是结果里面只包含了关键的信息(即‘=’右边的部分)