首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >放气压缩-数值示例

放气压缩-数值示例
EN

Stack Overflow用户
提问于 2021-07-23 09:39:28
回答 1查看 70关注 0票数 0

我真的很感兴趣看到一个数字例子如何放气压缩工作,手动。

以下非常简短的文本'abc‘已使用deflate算法进行压缩,输出'eJxLTEoGAAJNASc=’,其二进制表示法为:

01100101 01001010 01111000 01001100 01010100 01000101 01101111 01000111 01000001 01000001 01001010 01001110 01000001 01010011 01100011 00111101

有没有人能手把手演示一下位计数的步骤是如何工作的,它会将这个0和1的字符串解码为原始字符串'abc‘?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-23 23:47:07

您的二进制转储是您提供的Base64字符串,而不是实际的二进制压缩数据。该数据以十六进制表示:

代码语言:javascript
复制
78 9c 4b 4c 4a 06 00 02 4d 01 27

或二进制形式:

代码语言:javascript
复制
01111000 10011100 01001011 01001100 01001010 00000110 00000000 00000010 01001101 00000001 00100111

您可以使用infgen来分解放气流。你的数据实际上是一个压缩流的zlib包装器:

代码语言:javascript
复制
! infgen 2.5 output
!
zlib
!
last                    ! 1
fixed                   ! 01
literal 'a              ! 10010001
literal 'b              ! 10010010
literal 'c              ! 10010011
end                     ! 0000000
                        ! 000000
!
adler

deflate格式记录在RFC 1951中,zlib包装器记录在RFC 1950中。

前两个字节是zlib头。然后下一个字节的低位是011,其中低位1表示这是最后一个块,而上面的01表示这是一个固定块。请注意,这些位是从最低有效位到最高有效位(自下而上)读取的。deflate数据中五个字节的剩余位是符号abc,以及块结束符号。后面是未压缩数据的四字节Adler-32校验值。

这是一个非常无聊的例子,因为它太短了。你需要一个更长的例子来使用动态块,这样你就可以探索一个动态块头的全貌。

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

https://stackoverflow.com/questions/68493085

复制
相关文章

相似问题

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