一千萬個為什麽

搜索

為byte.ToString(“x2”)提供IFormatProvider是否重要?

如果您在一個字節上調用ToString將其轉換為2位十六進制值,那麽以任何方式使用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默認值,它會在輸出中產生影響嗎?

最佳答案

也許,在遙遠的未來,我們將對Hex值有文化依賴的符號。但是今天沒有。您可以安全地省略FormatProvider。

轉載註明原文: 為byte.ToString(“x2”)提供IFormatProvider是否重要?