Deflate 压缩 - 数值示例

2024-06-25

我真的很想看看一个数字示例,手动压缩如何进行压缩。

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

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

任何人都可以帮忙展示位计数步骤如何手动工作,将这个 0 和 1 字符串解码为原始字符串“abc”吗?

谢谢你!


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

78 9c 4b 4c 4a 06 00 02 4d 01 27

或者用二进制表示:

01111000 10011100 01001011 01001100 01001010 00000110 00000000 00000010 01001101 00000001 00100111

您可以使用infgen https://github.com/madler/infgen分解放气流。您的数据实际上是围绕 deflate 流的 zlib 包装器:

! 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 https://datatracker.ietf.org/doc/html/rfc1951,以及 zlib 包装器RFC 1950 https://datatracker.ietf.org/doc/html/rfc1950.

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

这是一个非常无聊的例子,因为它很短。您将需要一个更长的示例来使用动态块,以便您可以充分探索动态块标题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Deflate 压缩 - 数值示例 的相关文章

  • 显示 � 而不是 £

    从 mysql 数据库提取数据时 显示符号 而不是 有问题的字段已整理为 utf8 general ci 我也有在页面的 head 标签上 有什么想法吗 Use mysql query SET NAMES UTF8 在对数据库执行任何查询之
  • 拓扑排序卡恩算法 BFS 或 DFS

    拓扑排序的方法是BFS还是DFS 哪个正确 我认为BFS是对的 但有些网站说DFS 有些网站说BFS 我很困惑 卡恩算法与 BFS 或 DFS 相同吗 或者BFS 或DFS 只是卡恩算法的工具 Kahn算法和DFS在实践中都用于拓扑排序 选
  • 使用 O(1) 辅助空间迭代二叉树

    是否可以在 O 1 辅助空间中迭代二叉树 不使用堆栈 队列等 或者这已被证明是不可能的 如果可以的话 怎样才能做到呢 编辑 我得到的关于如果有指向父节点的指针就可能实现这一点的响应很有趣 我不知道可以做到这一点 但取决于您如何看待它 这可以
  • 位图中连续区域的计数是否可以比 O(r * c) 改进?

    您将获得一张由卫星拍摄的表面图像 该图像是一个位图 其中水用 标记 土地标记为 相邻组 形成一个岛屿 二 如果它们水平 垂直或对角相邻 则它们是相邻的 您的任务是打印位图中岛屿的数量 输入示例 输出 5 这是我的实现 需要O r c 空间和
  • 计算序列 1,3,8,22,60,164,448,1224... 的第 n 项? [复制]

    这个问题在这里已经有答案了 可能的重复 我想以 Order 1 或 nlogn 的顺序生成序列 1 3 8 22 60 164 的第 n 项 https stackoverflow com questions 11301992 i want
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • 递归最长递增子序列的记忆

    我为最长递增子序列提出了简单的以下递归解决方案 但是 您可以帮助将记忆包含到这个递归解决方案中吗 public int findLIS int a int maxSoFar int item int count if item a leng
  • 如何使用 C 中的 Banker's Rounding 将 double 舍入为 int

    我想编写一个函数 使用银行家的舍入方法将双精度数舍入为整数 将一半舍入为偶数 http en wikipedia org wiki Rounding Round half to even http en wikipedia org wiki
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • 将 diff 转换为带有删除线的 Markdown?

    我想转换输出diff 在 Markdown 文件上 降价与
  • 在 RStudio 控制台中显示西里尔字母

    我在 Rstudio 控制台中显示俄语字符时遇到问题 我使用 readxl 包加载带有俄语的 Excel 文件 西里尔字母在数据框中正确显示 但是 如果我运行一个输出包含变量名称的函数 RStudio 控制台将显示符号而不是正确的西里尔字符
  • 查找预排序数组中给定值的最低索引

    嘿 我在采访中遇到了这个问题 想知道解决它的最佳方法是什么 假设给定一个已经排序的数组 并且您想要找到某个值 x 的最低索引 这是我想出的 python 伪代码 我只是想知道是否有更好的方法来实现它 def findLowestIndex
  • 排序数组最快的搜索方法是什么?

    正在回答另一个问题 https stackoverflow com questions 4752028 whats wrong with this interpolation search implementation 4752042 47
  • 将压缩的json数据存储在本地存储中

    我想将 JSON 数据存储在本地存储中 有时存储的数据可能超过 5MB 每个域的浏览器允许的最大阈值 无论如何 我可以压缩或压缩数据并将其存储在本地存储中吗 如果对大数据进行每个 JS 函数的压缩和解压 会增加多少延迟 我正在使用这个 js
  • 下面代码的时间复杂度怎么是O(n)?

    I was solving a time complexity question on Interview Bit which is given below in the image 这个问题的正确答案是O N 但根据我的说法 答案应该是
  • 将字节数组写入txt文件并将其读回

    我有一个字节数组 我需要将其写入 txt 文件 之后我需要从那里读取该字节数组 这里出现了一个问题 我读了这个将Java字符串转换为字节数组 https stackoverflow com questions 5499924 convert
  • last.fm、groveshark、pandora 等推荐网站背后的算法是什么?

    我正在考虑启动一个基于推荐系统的项目 我需要在这方面提高自己 这看起来是网络端的热门话题 还想知道lastfm groveshark pandora 的推荐系统使用什么算法 如果您知道有关此类算法的任何书籍 网站或任何资源 请告知 看一下协
  • 如何找到包含序列所有元素的最小长度子序列

    给定一个序列 例如S 1 8 2 1 4 1 2 9 1 8 4 我需要找到包含所有元素的最小长度子序列S 没有重复 顺序无关紧要 如何有效地找到这个子序列 注意 有 5 个不同的元素 S 1 2 4 8 9 最小长度子序列必须包含所有这
  • 将列表列表替换为“压缩”列表列表,同时保持顺序

    我有一个列表列表 如我所附的代码所示 如果有任何共同值 我想链接每个子列表 然后我想用列表的精简列表替换列表的列表 例子 如果我有一个清单 1 2 3 3 4 I want 1 2 3 4 如果我有 4 3 1 2 3 I want 4 3
  • 如何在 Rails for Android 中使用 gzip 压缩 JSON?

    我正在运行 Rails 3 2 7 和 Ruby 1 9 3p194 以从 SQLite 数据库输出 JSON 数据 render json gt result to json Android 应用程序使用通过以下方式加载的 JSON 文件

随机推荐