编码为运行长度编码

时间:2018-06-14 01:45:05

标签: encoding run-length-encoding

我有一个3位编码版本,我必须在下面更改为RLE格式,但我不理解该过程的后半部分。

鉴于11111000000010000001111111000000,此数据的RLE形式是什么?

我知道我必须把它分解为5个1,7个0,1个1个,6个0个,7个1个,6个0个。

然后它说"对于每个组,结合运行类型后跟二进制长度。使用空格分隔每次运行:"

1101 0111 1001 0110 1111 0110是RLE表单。

我的问题是5个1,7个0,1个1个,6个0个,7个1个,6个0怎么转移到1011 0111等。

1 个答案:

答案 0 :(得分:0)

这实际上是一个4位编码,每个4位块包含1位数据加3位重复量:

1101 = 1;101b = 1;5 = bit '1' repeated 5 times
0111 = 0;111b = 0;7 = bit '0' repeated 7 times
1001 = 1;001b = 1;1 = bit '1' repeated 1 time
0110 = 0;110b = 0;6 = bit '0' repeated 6 times
1111 = 1;111b = 1;7 = bit '1' repeated 7 times
0110 = 0;110b = 0;6 = bit '0' repeated 6 times

因此,正如您的任务字面上所述,您需要做的就是首先设置运行类型(0或1),然后将运行长度转换为二进制格式(例如,' 5&# 39;成为' 101')并将其添加到其后面。

唯一没有明确表示你需要将运行长度调整为3位的事实(尽管我怀疑有人确实告诉过你,因为你谈到了#3; 3位编码"),事实上,这为每个块提供了7位的最大游程长度,这意味着如果你连续遇到7个以上相同的类型,你需要将它分成多个块。