Ну так посмотри какое значение в packet->size и какое значение принимает i. Кроме того не вижу смысла преобразовывать байт в чар. Если нужно копировать в ворд (2байта) либо в дворд (4байта), то можно еще так -
Код:
memcpy(&d, buf+i, sizeof(int));
или так -