首页 > 解决方案 > 编码为游程编码

问题描述

我有一个 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 等的。

标签: encodingrun-length-encoding

解决方案


这实际上是一个 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 个相同类型的,您需要将其拆分为多个块。


推荐阅读