По каналу связи получена последовательность байтов, если интерпретировать их как однобайтовые беззнаковые целые числа, то она записывается: 1, 128, 133, 55, 2, 5, 127, 131, 33 эта последовательность перед передачей была закодирована rle-методом. раскодируйте последовательность, определите и запишите в ответ количество байт в полученной последовательности. информация: упаковка информации методом rle-кодирования состоит в следующем. упакованная последовательность содержит байты, за каждым байтом следует один или несколько байтов данных. если старший бит байта равен 1, то следующий за байт данных нужно повторить столько раз, сколько записано в оставшихся 7 битах байта. если же старший бит байта равен 0, то надо взять несколько следующих байтов данных без изменения. сколько именно – записано в оставшихся 7 битах байта. например, байт 10000111 говорит о том, что следующий за ним байт надо повторить 7 раз, а байт 00000100 – о том, что следующие за ним 4 байта надо взять без изменений.
Имеем байтики в RLE:
0x01, 0x80, 0x85, 0x37, 0x02, 0x05, 0x7F, 0x83, 0x21 - в шестнадцатеричной
%0000 0001, %1000 0000, %1000 0101, %0011 1111, %0000 0010, %0000 0101, %0111 1111, %1000 0011, %0010 0001 - в двоичной
Декодируем:
0x01 0x80 > 0x80 (берём 1 последующий байт)
0x85 0x37 > 0x37 0x37 0x37 0x37 0x37 (повторяем следующий байт 5 раз)
0x02 0x05 0x7F --> 0x05 0x7F (2 последующих байта)
0x83 0x21 --> 0x21 0x21 0x21 (повторяем 0x21 3 раза)
Декодированная последовательность байт:
0x80 0x37 0x37 0x37 0x37 0x37 0x05 0x7F 0x21 0x21 0x21
Всего 11 байт.