首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交织bzip2和非bzip2 2数据

交织bzip2和非bzip2 2数据
EN

Stack Overflow用户
提问于 2016-11-07 22:56:19
回答 1查看 193关注 0票数 0

我正在考虑创建一种文件格式,将两种类型的原始字节块交织在一起。

一个块将包含一个bzip2 2压缩数据块,其中有一个包含通常的bzip2 幻数 (BZh9)的头部。

第二个块将由其他感兴趣的数据组成,它有一个包含不同魔术号(TBD)的头。

这两个神奇的数字将用于寻找、识别和处理这两种数据块类型。

我的问题是:对于第二种块类型,在bzip2 2压缩字节块中不太可能(或者更好,不可能)找到一个神奇的数字吗?

换句话说,在某个统计阈值范围内,是否有bzip2排除的特定字节,或者在压缩时不太可能使用,而我可以使用这些字节作为同一文件中另一种数据类型的头呢?

一种选择是,当我找到第二块类型的头字节时,我只需尝试处理第二块类型中的数据,如果处理失败,那么我假设我意外地在一个压缩的bzip2块中。但是我想知道是否有可能在bzip2块中找不到字节,或者不可能找到字节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 18:24:59

不是的。bzip2压缩数据可以包含任意一对字节,基本上所有字节都具有相同的概率。您所能做的就是定义一个较长的字节序列作为签名,以降低该序列意外出现在压缩数据中的可能性。但还是可以的。

bzip2格式是自我终止的,所以如果您愿意花时间解码bzip2数据,那么您总是可以找到下一步的位置。

要在注释中回答这个问题,整个bzip2流必然终止于一个字节边界。最后一个字节可能有0到7位的零衬垫。您可以从第二个流组件开始向后搜索以查找bzip2结束标记0x177245385090 (pi平方根的前12位十进制数字),它可以以特定字节的任意位开始。应该是80到87位。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40476174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档