我有一个 64 位值,我想利用这样一个事实进行压缩,即中间某处只有一部分包含数据,并且之前和之后都是零。

假设实际数据长 l 位,并在前面填充 n 个 0,在末尾填充 m 个 0,这样 n + l + m = 64。我可以传输 l 位加上我可以传输的任何内容,而不是传输/存储 64 位需要在64位区间对数据的位置进行编码。

例如,假设我正在存储 l、m 和数据位,那么我将通过读取 l、读取 l 位数据、读取 m 并将数据左移 m 位来恢复原始的 64 位模式。

我能想到的最小开销是 6 位的两倍,用于存储 l、n 和 m 中的任意两个(每个都可以在 0 到 64 之间)。有没有可能减少这个数字?

请您参考如下方法:

您的分析听起来适合单个值。但是,如果您同时传输大量此类值,则像 gzip 这样的通用熵编码算法可能会做得更好,因为它可以很好地消除零字符串,还可以利用数据中的冗余。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!