主题:[讨论]出题:“中华压缩软件”
《中华压缩软件》是XXX公司的新产品,目的是为了让中国的软件“扬眉吐气”。《中华压缩软件》使用3种方法来压缩文件
1.原文记录即将来的文件原封不动地记录下来。原文每七位记录为一个字节,记录后的每一个字节首位都是1。该段最后无法填充满一个字节时,在最后补"0",下一个字节是“128+最后一个字节的实际长度”。例如:
数据 10110101 11011101记录为:
11011010 11110111 11010000 1[i]0000011[/i]
2.单字压缩:每一个字节的二进制如下:
[u]1 [该字的内容] [该字的重复次数] [/u]例如,数据 011111111 11000000记录如下:
10000001 11001001 100000110
3.四字压缩:每2个字节的二进制如下:
[u]1 [四个字] [重复次数(占用11位)][/u] 例如:数据0010重复100次的压缩为:
10010000 01100100
此外,为了方便在各种方法之间进行转换,《中华压缩软件》还提供“转换字”。转换字首位是0,实际数值是压缩方法的代号(1,2,3)。
压缩文件开始时必须写一个代号(如00000001)。压缩中间转换模式也写代号。
任务:
1、压缩文件。Zip.hsk中记录有两行,第一行是文件路径,第二行是输出路径,输入文件大小不超过50K。要求输出文件必须可以解压成原文件,且输出文件大小不得超过原文件(如果超过,在50字节以内)。
2、解压。Unzip.hsk中有压缩文件的路径和输出路径,你必须将压缩文件进行正确的解压。解压时速度高于1KB/s。
3、最佳压缩。任务同1,但是任务文件为Best.hsk,要求输出文件的大小是所有正确的压缩中最小的。
1.原文记录即将来的文件原封不动地记录下来。原文每七位记录为一个字节,记录后的每一个字节首位都是1。该段最后无法填充满一个字节时,在最后补"0",下一个字节是“128+最后一个字节的实际长度”。例如:
数据 10110101 11011101记录为:
11011010 11110111 11010000 1[i]0000011[/i]
2.单字压缩:每一个字节的二进制如下:
[u]1 [该字的内容] [该字的重复次数] [/u]例如,数据 011111111 11000000记录如下:
10000001 11001001 100000110
3.四字压缩:每2个字节的二进制如下:
[u]1 [四个字] [重复次数(占用11位)][/u] 例如:数据0010重复100次的压缩为:
10010000 01100100
此外,为了方便在各种方法之间进行转换,《中华压缩软件》还提供“转换字”。转换字首位是0,实际数值是压缩方法的代号(1,2,3)。
压缩文件开始时必须写一个代号(如00000001)。压缩中间转换模式也写代号。
任务:
1、压缩文件。Zip.hsk中记录有两行,第一行是文件路径,第二行是输出路径,输入文件大小不超过50K。要求输出文件必须可以解压成原文件,且输出文件大小不得超过原文件(如果超过,在50字节以内)。
2、解压。Unzip.hsk中有压缩文件的路径和输出路径,你必须将压缩文件进行正确的解压。解压时速度高于1KB/s。
3、最佳压缩。任务同1,但是任务文件为Best.hsk,要求输出文件的大小是所有正确的压缩中最小的。