мне бы самому хотелось итерировать цикл по исходным байтам, примерно так:
unsigned char
*src, /* source */
*dst, /* destination */
c, /* current byte */
p; /* (part of) previous byte */
int
si, /* source index */
di, /* dest. index */
bi; /* bit index */
for(p = bi = di = si = 0; si < 140; )
{
c = src[si++];
dst[di++] = p | ((c << bi) & 127);
p = (unsigned)c >> (7-bi++);
if(bi == 7)
dst[di++] = p,
p = bi = 0;
} ---
> Мой вариант далеко не оптимален по сравнению с вариантом > LLL, но работает исправно...
Здесь я улавливаю намек на то, что алгоритм Killer'а, слегка мной отредактированный, правильно не функционирует. Это на самом деле так?
...
while(pos2<140)
^^^
здесь наверно 160 должно быть?
или pos1 вместо pos2
---
|