Условие:
Реализовать консольную утилиту, считающую хеш от файла
1. Утилита может считать 2 варианта хеша:
- CRC32
- 32-битный хеш через сумму 32-битных блоков данных (порядок big-endian)
2. Утилита принимает имя файла и вариант расчета хеша как аргументы командной строки
3. Результат печатается в стандартный поток вывода
Аргументы программы:
```
./hasher -h
./hasher <filename> -m <mode>
./hasher -m <mode> <filename>
```
Где <mode> из \{crc32, sum32\}
Обратите внимание на следующие моменты:
1. Результат хеширования файла не должен зависеть от операционной системы или архитектуры CPU.
2. В случае ошибок утилита должна нотифицировать о них (текст выводить в стандартный поток ошибок std::cerr).
3. В случае некорректного использования утилита должна вернуть ошибку и подсказать пользователю, как её запускать (распечатать help в std::cerr ).
4. Если что-то пошло не так, дайте пользователю возможность понять, что именно.
5. Стиль программы свободный (camelCase/underscore), но он должен быть! Выберите стиль и придерживайтесь его.
6. Форматирование должно соответствовать clang-format (система предварительного тестирования это проверит).
7. Не надо придумывать CRC32 самому, возьмите реализацию попроще из сети.
8. Возьмите заготовку из репозитория и доделайте реализацию.

