Имеет ли значение IFormatProvider для byte.ToString ("x2")? - PullRequest
2 голосов
/ 16 апреля 2010

Если вы вызываете ToString для байта, чтобы преобразовать его в шестизначное шестнадцатеричное значение, имеет ли значение, если вы каким-либо образом используете предоставление формата CultureInfo.CurrentCulture или CultureInfo.InvariantCulture?

Пример:

public string CalculateMD5Hash(string input)
{
    MD5 md5 = System.Security.Cryptography.MD5.Create();
    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
    byte[] hash = md5.ComputeHash(inputBytes);

    StringBuilder sb = new StringBuilder();
    foreach (byte b in hash)
    {
        sb.Append(b.ToString("x2",CultureInfo.InvariantCulture));
    }
    return sb.ToString();
}

Как правило, я могу опустить IFormatProvider и всегда получать один и тот же результат, или если я укажу значения по умолчанию для CultureInfo, это повлияет на результат?

1 Ответ

3 голосов
/ 16 апреля 2010

Возможно, в далеком будущем у нас будут культурно зависимые обозначения для шестнадцатеричных значений. Но сегодня нет. Вы можете безопасно пропустить FormatProvider.

...