计算数组中的数字(运行 长度解码)
calculate numbers in array (run length decoding)
int[] bytes = new int[9] { 123, 5, 65, 123, 6, 77, 123, 4, 101 };
int count = 1;
for (int i = 1; i < bytes.Length; i++)
{
if (bytes[i] == 123)
{
count++;
}
else
{
Console.WriteLine(bytes[i]);
}
}
Console.ReadLine();
我是编程初学者。
123 是某种类型的“标记”
我不知道如何做这样的控制台输出:65 65 65 65 65 77 77 77 77 77 77 101 101 101 101
我将不胜感激
要解码任何东西,您确实需要说明是什么东西。在这种情况下,我可以推测:
- 123 表示“接下来的两个字节 X 和 Y 应该被解释为负载 Y 的 X 实例 (0-255)”
所以你会解析一个字节,如果它不是 123: 放弃,因为你没有任何其他规则可以遵循,否则,读取 X 和 Y,并输出值 Y
的 X 个副本
在伪代码中:
while(TryTakeByte(out val)))
switch val
123:
if (!TryTakeByte(out x) || !TryTakeByte(out y)) FailEndOfStream()
for (i from 0 to x)
write y
default:
FailNoClueWhatToDo() // refer to protocol specification
int[] bytes = new int[9] { 123, 5, 65, 123, 6, 77, 123, 4, 101 };
int count = 1;
for (int i = 1; i < bytes.Length; i++)
{
if (bytes[i] == 123)
{
count++;
}
else
{
Console.WriteLine(bytes[i]);
}
}
Console.ReadLine();
我是编程初学者。
123 是某种类型的“标记”
我不知道如何做这样的控制台输出:65 65 65 65 65 77 77 77 77 77 77 101 101 101 101
我将不胜感激
要解码任何东西,您确实需要说明是什么东西。在这种情况下,我可以推测:
- 123 表示“接下来的两个字节 X 和 Y 应该被解释为负载 Y 的 X 实例 (0-255)”
所以你会解析一个字节,如果它不是 123: 放弃,因为你没有任何其他规则可以遵循,否则,读取 X 和 Y,并输出值 Y
的 X 个副本在伪代码中:
while(TryTakeByte(out val)))
switch val
123:
if (!TryTakeByte(out x) || !TryTakeByte(out y)) FailEndOfStream()
for (i from 0 to x)
write y
default:
FailNoClueWhatToDo() // refer to protocol specification