Как преобразовать хеш MD5 в строку и использовать его в качестве имени файла

const применение к методу означает, что указатель this, то есть указатель на экземпляр, на котором работает метод, равен const. Это означает, что он не может модифицировать поля и может вызывать только const методы для него , но не вообще.

Вызов свободной функции вполне допустим, или даже вызов метода, не относящегося к const, к другому объекту того же класса, если такой объект не const.

5
задан unwind 17 April 2009 в 12:38
поделиться

4 ответа

Как насчет этого:

string filename = BitConverter.ToString(yourMD5ByteArray);

Если вы предпочитаете более короткое имя файла без дефисов, тогда вы можете просто использовать:

string filename =
    BitConverter.ToString(yourMD5ByteArray).Replace("-", string.Empty);
20
ответ дан 18 December 2019 в 05:18
поделиться

System.Convert.ToBase64String

Как отметил комментатор - обычная кодировка base 64 может содержать символ '/', что, несомненно, будет проблемой с именами файлов. Тем не менее, есть и другие символы, которые можно использовать, например, подчеркивание - просто замените все '/' на подчеркивание.

string filename = Convert.ToBase64String(md5HashBytes).Replace("/","_");
11
ответ дан 18 December 2019 в 05:18
поделиться

Технически использовать Base64 плохо, если это Windows, имена файлов нечувствительны к регистру (по крайней мере в представлении исследователей) .. но в base64 «a» отличается от «A», это означает, что, возможно, это маловероятно, но в итоге вы столкнетесь с еще более высокой частотой столкновений.

Лучшей альтернативой является шестнадцатеричный код, такой как класс bitconverter, или, если вы можете использовать base32 кодирование (которое после удаления отступов из base64 и base32, а также в случае 128-битного файла даст вам имена файлов одинаковой длины).

1
ответ дан 18 December 2019 в 05:18
поделиться

Попробуйте это:

Guid guid = new Guid(md5HashBytes);
string hashString = guid.ToString("N"); 
// format: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

string hashString = guid.ToString("D"); 
// format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

string hashString = guid.ToString("B"); 
// format: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

string hashString = guid.ToString("P"); 
// format: (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
3
ответ дан 18 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: