![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посчитать 32-bit CRC [V.42 МККТТ] [D7, WinXP]
Платинум © (2015-07-11 03:29:00)Есть массив байт. Необходимо вычислить 32-bit CRC:
> polynomial: x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
> After all the data bytes are processed, the CRC is inverted
Находил примеры всякие, но видимо считает не так как нужно. Программа в которой тоже есть массив и куда я "отправляю" посчитанный Cardinal говорит что это не верно, не соответствует массиву.
Rouse_ (2015-07-11 21:22:00) [1]Да не вопрос, действительно удобная, просто не привычно :)
DVM (2015-07-11 20:41:00) [2]
> Rouse_ © (11.07.15 20:34) [6]
Да я этот вид шапки перенял у тебя уже лет 5-7 назад, просто понравилась на тот момент, а теперь она уже автоматом вставляется CnPack при создании модуля.
Rouse_ (2015-07-11 20:34:00) [3]Я просто скачал, смотрю - шапка моя.
Читаю - код не мой, думаю что за фигня :)
DVM (2015-07-11 19:33:00) [4]
> Rouse_ © (11.07.15 16:32) [4]
Так и есть :)
Rouse_ (2015-07-11 16:32:00) [5]
> DVM © (11.07.15 11:19) [2]
Дима - зараза, ты у меня шапку модуля свистнул, это я ее в таком виде первый стал делать :)))
Rouse_ (2015-07-11 15:51:00) [6]
> DVM © (11.07.15 11:19) [2]
> Тут смотри, твой полином $EDB88320
А, так этож POSIX, тогда автору нужно учитывать реверсирование после рассчета:
unsigned reverse(unsigned x) {
x = ((x & 0x55555555) > 1) & 0x55555555);
x = ((x & 0x33333333) > 2) & 0x33333333);
x = ((x & 0x0F0F0F0F) > 4) & 0x0F0F0F0F);
x = (x 8) & 0xFF00) | (x >> 24);
return x;
}
DVM (2015-07-11 11:19:00) [7]
> Платинум (11.07.15 03:29)
https://yadi.sk/d/PQG-3pQWhoQdE
Тут смотри, твой полином $EDB88320
Rouse_ (2015-07-11 10:49:00) [8]Покажи какой вариант кода не работает, и кстати, что за программа?