Зачем какие-то нули в конец пакета добавлять?

Нужно вызвать функцию подсчета CRC с требуемыми аргументами.
1-й аргумент: указатель на начало буфера (начало массива),
2-й аргумент: размер буфера для расчета (количество символов пакета, но не размер всего массива, отведенного для хранения данных!),
3-й аргумент: начальное значение CRC. 3-й аргумент д.б. равен 0xFFFF, если расчет с начала пакета данных идет, либо равен предыдущему значению CRC, если расчет идет по "кусочкам" (по одному байту, например) пакета данных.
В результате значение CRC, возвращаемое функцией после расчета по всему пакету данных, должно быть равно нулю. Если оно не равно нулю, то пакет испорчен и данным пакета доверять нельзя.