swanrnd
@swanrnd
Издатель HTML5 игр

Как получить численно буквенный хеш файла?

Есть куча файлов. Но основе содержимого надо сгенерировать уникальное имя со следующими требованиями:
- имя содержит 0-9 и a-z (без больших букв)
- чем короче имя тем лучше
- надо минимизировать коллизии
- для одинаковых файлов - одинаковое имя.
- должно не нагружать сервер.

Md5 создает длинные файлы, хочу уменьшить их количество.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 4
GavriKos
@GavriKos
Считаете хеш каждого файла. Если такой хеш уже встречался - даете такое же имя как и раньше давали такому же хешу. Если не встречался - даете новое имя.
Новое имя генерируете простейшим инкрементом. Т.е. первый файл - "0". Второй файл - "1". Третий файл - "2". Десятый файл - "a".

Такой подход не рационален, если вам надо будет в последствии определять, есть ли уже файл с таким хешом, т.к. имя файла не отражает хеш. Но в условии об этом ни слова. Ну и в крайнем случае можете хранить таблицу "хеш-имя".
Ответ написан
vpuhoff
@vpuhoff
Программист в свободное от работы время
CRC-4; 2 CRC-8; 3 CRC-16; 4 CRC-32 выбирайте какой больше нравится. Но уникальности не гарантирует. Гарантирует только, что для одинаковых файлов будет одинаковый.
Ответ написан
Комментировать
sim3x
@sim3x
Хочешь получить короткое имя = получи проблему переименования, когда файлов станет много и появятся коллизии
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
- чем короче имя тем лучше
- надо минимизировать коллизии

Эти два пункта - взаимоисключающие
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы