c# - 游程编码假设

标签 c# compression run-length-encoding

实现 Run-length encoding (RLE) 时,我可以假设 Runs 将短于一个字节吗?

所以不会出现像这样运行的情况

WWWBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

这里有 256 个 B,因为你不能用一个字节来表示那个长度,而你可以用 3W 来表示 W

如果不是,是否应该将 Run 分成两个 Run?这种情况应该如何处理?我找不到有关此案例的任何信息。

最佳答案

据我了解,您对情况的理解是正确的。用于统计字符重复次数的字长通常是一个字节,单个字符通常也被编码为一个字节。如果在输入中重复了例如300 b,编码如下。

255 (number of repetitions of the next character)
 98 (ASCII value for b)
 45 (nunber of repetitions of the next character)
 98 (ASCII value for b)

总的来说,长度大于 255 的游程必须分成两个游程。也就是说,实际的编码取决于具体的实现;也可以使用字节以外的其他类型来计算字符的重复次数。

关于c# - 游程编码假设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50574640/

相关文章:

c# - 如何从 C# 调用 Microsoft office outlook 宏

Java 游程长度解码(扩展压缩字符串)

matlab - 向量的重复元素

c# - 在 Surface 上的 ScatterView 中使用 LibraryStacks

C#:是否可以在 SQL 数据库中存储十进制数组?

c# - 如何更改 webClient.UploadData() 的时间限制?

php - 为什么字符串在应用 gzcompress 和 gzuncompress 时具有相同的大小?

Java 路径压缩

css - 将 css 与 title 和 rel 属性组合并最小化

c# - 给定排序字符串的游程编码