Метод Replace не заменяет тире на пустую строку - PullRequest
0 голосов
/ 29 января 2012

Я пытаюсь хэшировать файл, используя SHA1. Результат выглядит так: B7-DB-B9-93-E7-2F-6F-EB-6D-CD-CC-A8-DE-D2-F1-01-6E-8A-53-BC

Как заменить тире на пустую строку или просто удалить их?

Код пытается заменить тире, но кажется, что он ничего не меняет, и тире все еще на месте.

using (HashAlgorithm hashSHA1 = new SHA1Managed())
using (Stream file = new FileStream(ofdBrowse.FileName, FileMode.Open, FileAccess.Read))
{
    byte[] hash = hashSHA1.ComputeHash(file);

    txtSHA1.Text = BitConverter.ToString(hash).Replace("-", "");
}

Ответы [ 2 ]

3 голосов
/ 29 января 2012

Разница между тире и дефисом?http://msdn.microsoft.com/en-us/library/3a733s97.aspx

Не совсем уверен.Просто мое предположение в темноте.

2 голосов
/ 29 января 2012

Код, который вы даете определенно удаляет тире. Короткая, но полная программа, демонстрирующая, что:

using System;
using System.IO;
using System.Security.Cryptography;

class Test
{
    static void Main(string[] args)
    {
        using (HashAlgorithm hashSHA1 = new SHA1Managed())
        {
            // Actual data doesn't matter
            using (Stream data = new MemoryStream())
            {
                byte[] hash = hashSHA1.ComputeHash(data);

                Console.WriteLine(BitConverter.ToString(hash).Replace("-", ""));
            }
        }
    }
}

Итак, потенциальная причина вашей проблемы:

  • Вы не запускаете сборку, как вы думаете
  • У вас есть другой код, который выполняет хэширование, но не имеет Replace вызов
  • Вы смотрите на неправильный бит интерфейса:)

Трудно догадаться, какая из этих (или что-то еще) является проблемой, но этот код не так ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...