Код
u16 r5_sum(unsigned char *b, u32 len)
{
register u32 i;
register u16 csum = 0;
for(i = 0; i < len; i++) {
csum += (b[i] << 4);
csum += (b[i] >> 4);
csum *= 11;
}
return csum;
}
Выдрал в свое время из какой-то файловой системы вот такой вот сердитый csum - нравится скорость.