请求识别2000年的自定义文本压缩算法(附输入输出样本)
压缩算法识别求助
我有一批经过编码压缩的文本文件,仅持有输出文件,不清楚使用的压缩算法,现寻求帮助识别该算法。目前已掌握该算法的以下特征:
- 每个文件最多包含8行
- 每行恰好包含123个字符(含空格)
- 输出文件采用压缩方式存储
- 输出文件以字节
00 00开头,标识压缩数据的起始 - 非重复字符以其ASCII值编码
- 若某字符连续重复超过4次,编码格式为
00+重复次数+重复字符,例如'A'重复5次时编码为00 05 41 - 连续ASCII编码的字符数量需乘以4,放在每组编码的开头
- 该算法复杂度较低,因为文件源自2000年
我拥有3000组输入输出对,以下为样本(用十六进制编辑器打开输出文件更清晰):
输入文本
SMESP LTFMLTVAPP0120450 F0 RA N41163100E028450700 Y071115 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0120500 K0 RA N41163100E028450700 Y116160 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0120700 K0 RA N41163100E028450700 Y071115 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0121100 K0 RA N41163100E028450700 Y071115 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0121250 F0 RA N41163100E028450700 Y296340 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0122475 T0 RA N41163100E028450700 Y071115 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0122575 T0 RA N41163100E028450700 Y296340 LTFMLTPA YESILKOY APP RADAR SMESP LTFMLTVAPP0126425 T0 RA N41163100E028450700 Y YESILKOY APP RADAR
输出(十六进制)
00 00 BC 53 4D 45 53 50 20 4C 54 46 4D 4C 54 56 41 50 50 30 31 32 30 34 35 30 20 46 30 20 20 20 52 41 20 4E 34 31 31 36 33 31 30 30 45 30 32 38 34 35 9D 0C 30 37 30 00 07 20 1C 59 30 37 31 31 31 35 00 0B 20 B1 24 08 50 41 00 0B 20 48 59 45 53 49 4C 4B 4F 59 20 41 50 50 20 52 41 44 41 52 00 07 20 03 B5 07 57 B9 07 35 30 30 20 4B D7 12 01 31 31 36 31 36 C3 BF 07 83 B0 07 91 2F 83 B9 07 C3 6F 0F 43 64 0F CB BF 07 31 31 C3 BE 07 47 CA 1E 32 D7 1F 17 32 39 36 33 34 03 13 17 DB 6F 0F 32 34 37 35 20 54 83 6D 0F 4B BA 07 32 35 C3 6F 0F 43 64 0F 0F BA 07 36 34 32 00 24 20 43 B6 07
样本解析
00 00:标识输出文件的起始BC:对应十进制188,188/4=47,即连续ASCII编码的字符数量为4753 4D 45 …. 38 34 35:对应ASCII字符串SMESP LTFMLTVAPP0120450 F0 RA N41163100E028459D 0C:待解析30 37 30:对应ASCII字符串“070”00 07 20:对应7个空格1C:对应十进制28,28/4=7,即连续ASCII编码的字符数量为7- 以此类推…
十六进制dump输出
hexdump -C -R 79058622o.bin 000000 00 00 bc 53 4d 45 53 50 20 4c 54 46 4d 4c 54 56 ..¼SMESP LTFMLTV 000010 41 50 50 30 31 32 30 34 35 30 20 46 30 20 20 20 APP0120450 F0 000020 52 41 20 4e 34 31 31 36 33 31 30 30 45 30 32 38 RA N41163100E028 000030 34 35 9d 0c 30 37 30 00 07 20 1c 59 30 37 31 31 45.070.. .Y0711 000040 31 35 00 0b 20 b1 24 08 50 41 00 0b 20 48 59 45 15.. ±$.PA.. HYE 000050 53 49 4c 4b 4f 59 20 41 50 50 20 52 41 44 41 52 SILKOY APP RADAR 000060 00 07 20 03 b5 07 57 b9 07 35 30 30 20 4b d7 12 .. .µ.W¹.500 K×. 000070 01 31 31 36 31 36 c3 bf 07 83 b0 07 91 2f 83 b9 .11616ÿ.ƒ°.‘/ƒ¹ 000080 07 c3 6f 0f 43 64 0f cb bf 07 31 31 c3 be 07 47 .Ão.Cd.Ë¿.11þ.G 000090 ca 1e 32 d7 1f 17 32 39 36 33 34 03 13 17 db 6f Ê.2×..29634...Ûo 0000a0 0f 32 34 37 35 20 54 83 6d 0f 4b ba 07 32 35 c3 .2475 Tƒm.Kº.25à 0000b0 6f 0f 43 64 0f 0f ba 07 36 34 32 00 24 20 43 b6 o.Cd..º.642.$ C¶ 0000c0 07 .
[输入输出对应关系示意图]
内容的提问来源于stack exchange,提问作者Kamil B
相关产品推荐
相关产品推荐

