计算数组中的数字(运行 长度解码)

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