Вы хотите придерживаться самих PAR? У меня есть полностью родная имплиментация Рида / Соломона, которую я опубликую, если это поможет (соответствие, на котором основаны PAR), но у меня нет ничего для всей обработки файлов и разбивки.
Мой код является реализацией Stream и создает строку со всеми данными для исправления ошибок. Затем вы можете испортить эти данные и отправить их обратно, и система автоматически восстановит их. Я бы просто опубликовал его, но он long , и я слишком ленив, чтобы сделать пост в блоге и ссылку на него.
Чтобы это работало как PAR, вам нужно разбить его на файлы, а затем создать систему, которая может идентифицировать отсутствующие тома и «добавлять» поврежденные данные для всех отсутствующих данных (математика не может обработать отсутствующие данные, только коррумпированной).
Кроме того, как примечание по производительности, система, для которой она была построена, была довольно «взрывной», она могла бы получать множество потоков по 100 тыс. Одновременно, но также долго не могла ничего сделать. Математическая версия на C # работала примерно на 6% быстрее, чем чистая версия на C. Если бы я проводил тестирование производительности, используя только безостановочную нагрузку, C # работает примерно на 1-2% медленнее. По моему опыту, большинство математических преобразований C в C # имеют одинаковые результаты производительности.