实现 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/