Delta 编码中的压缩比计算

Compression Ratio Calculation in Delta Encoding

我刚开始使用 Delta 编码来压缩 Hex 数据,我在 wiki 中使用了 C 实现,所以如果我的数据是 0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF 编码结果将是如下:0xFFFFFFF,0x0000000,0x0000000,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 编码是压缩前的一个步骤,它本身并不压缩。它启用后续压缩。然后,您应该获取增量编码的结果并将其提供给标准无损压缩器以查看它压缩了多少。

您在评论中提出的问题“但是 Huffman 或 RLE 会处理数字格式的十六进制数据吗?”表明你有些困惑。增量编码的结果是数组的二进制内容。 不是该二进制数据的十六进制和文本表示。