PackBits是 Apple Macintosh的压缩方法。
针对字节为单位,通过字节重复或不重复个数来减少字节的数量,达到压缩的目的。
思路:
把n个重复的字节用两个字节表示,第一个字节代表重复数(-1~-127),第二个字节代表重复值
把n个不重复的字节用n+1个字节表示,第一个字节代表不重复数重复数(0-127),第2~n+1个字节代表不重复值。
示例:
示例 | 原数据(十六进制) | 压缩数据(十六进制) | 说明 |
示例1 | 97 98 97 98 97 98 | 05 97 98 97 98 97 98 | 6(05+1,从0起算)个字节不重复 |
示例2 | 97 97 97 97 97 97 | FA 97 | FA(-6)个字节:97重复 |
示例3 | 97 97 97 98 98 98 | FD 97 FD 98 | FD(-3)个字节:97重复,FD(-3)个字节:98重复 |