Отфильтровать байт с определенным значением и следующим байтом XOR

Я получаю байтовый массив и должен удалить все 7Dh из массива и исключительный или следующий байт с 20h, чтобы восстановить исходный байт данных.

Каков наилучший способ сделать это?

1 ответ

Решение

Ну, первое, что нужно отметить, это то, что вы не можете действительно удалить значение из массива, поэтому вы не можете сделать это на месте; так что, возможно, что-то вроде:

static byte[] Demungify(byte[] value)
{
    var result = new List<byte>(value.Length);
    bool xor = false;
    for (int i = 0; i < value.Length; i++)
    {
        byte b = value[i];
        if (xor)
        {
            b ^= 0x20;
            xor = false;
        }
        if (b == 0x7D)
        {
            xor = true; // xor the following byte
            continue; // skip this byte
        }
        result.Add(b);
    }
    return result.ToArray();
}
Другие вопросы по тегам