微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Delta 编码中的压缩比计算

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?