如何解决Delta 编码中的压缩比计算
我是使用 Delta 编码来压缩 Hex 数据的新手,我在 wiki 中使用了 C 实现,所以如果我的数据是 0xFFFFFFF,0xFFFFFFF,0xFFFFFFFF 编码结果如下: 0xFFFFFFF,0x0000000,0x0000000,与压缩比=原始大小/压缩大小的其他无损算法不同,我发现数据大小将像压缩前一样固定,那么我如何计算增量编码中的压缩比?我怎么能压缩冗余增量? 代码是:
{
unsigned char last = 0;
for (int i = 0; i < length; i++)
{
unsigned char current = buffer[i];
buffer[i] = current - last;
last = current;
}
}
void delta_decode(unsigned char *buffer,int length)
{
unsigned char last = 0;
for (int i = 0; i < length; i++)
{
unsigned char delta = buffer[i];
buffer[i] = delta + last;
last = buffer[i];
}
} ```
解决方法
Delta 编码是压缩之前的一个步骤,它本身不会压缩。它启用后续压缩。然后,您应该获取 delta 编码的结果,并将其提供给标准的无损压缩器,以查看压缩了多少。
您在评论中的问题“但是 Huffman 或 RLE 可以处理数字格式的十六进制数据吗?”暗示你有些困惑。 delta 编码的结果是二进制数组的内容。 不是二进制数据的十六进制和文本表示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。