encoding - 编码为游程编码
问题描述
我有一个 3 位编码版本,我必须将其更改为 RLE 形式,如下所示,但我不理解该过程的后半部分。
给定11111000000010000001111111000000
,该数据的 RLE 形式是什么?
我知道我必须将其分解为五个 1、七个 0、一个 1、六个 0、七个 1、六个 0。
然后它说“对于每个组,结合运行类型和二进制长度。使用空格分隔每个运行:”
1101 0111 1001 0110 1111 0110
是 RLE 形式。
我的问题是五个 1、七个 0、一个 1、六个 0、七个 1、六个 0 是如何转移到 1011 0111 等的。
解决方案
这实际上是一个 4 位编码,每个 4 位块包含 1 位数据加上 3 位重复量:
1101 = 1;101b = 1;5 = 位“1”重复 5 次 0111 = 0;111b = 0;7 = 位“0”重复 7 次 1001 = 1;001b = 1;1 = 位“1”重复 1 次 0110 = 0;110b = 0;6 = 位“0”重复 6 次 1111 = 1;111b = 1;7 = 位“1”重复 7 次 0110 = 0;110b = 0;6 = 位“0”重复 6 次
所以,正如你的任务字面上所说,你需要做的就是首先设置运行类型(0或1),然后将你的运行长度转换为二进制格式(例如,'5'变成'101')和将其添加到它后面。
唯一没有明确说明的事实是,您需要将运行长度与 3 位对齐(尽管我怀疑有人确实告诉过您,因为您谈到了“3 位编码”),而事实是为您提供每块 7 位的最大运行长度,这意味着如果您连续遇到超过 7 个相同类型的,您需要将其拆分为多个块。
推荐阅读
- node.js - 如何减小图像文件大小。何时使用 Nodejs 从 Google 图片 URL 或域 URL 下载?
- java - 用 super(objects) 替换子类构造函数有什么问题?
- python - Pyspark 从 kafkaDirectStream 到 Postgresql
- google-apps-script - 有没有办法在 Google 帐户级别创建 Google Apps 触发器,而不是特定于一个表单?
- html - 为什么在尝试创建带有品牌徽标的导航栏时,品牌徽标会将其余部分向下推?
- html - :hover 在段落内的悬停链接上不起作用
- java - 将变量从 JFrame 传递到 JPanel?
- sapui5 - 在 Datepicker (SAP UI5) 上设置默认日期
- java - 未找到由接口定义的代理类
- c# - C#字典添加值数组