2010-04-15 2 views
2

ToString을 2 자리 16 진수 값으로 변환하기 위해 ToString을 호출하는 경우 어떤 식 으로든 CultureInfo.CurrentCulture 또는 CultureInfo.InvariantCulture 형식을 사용하면 문제가되지 않습니까?byte.ToString ("x2")에 IFormatProvider를 제공하는 것이 중요합니까?

예 :

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를 기본값의에 제공하는 경우는 출력의 차이를 만들 것입니다?

답변

3

어쩌면 멀지 않은 미래에 우리는 문화적으로 16 진수 값에 대한 표기법을 사용하게 될 것입니다. 하지만 오늘은 안된다. FormatProvider는 안전하게 생략 할 수 있습니다.

+0

그것이 내가 생각한 것입니다. 그러나 나는보고있는 일부 코드에서 그것을 알아 차렸고 단지 잘못으로 보였습니다. 확인 감사합니다!! –

+0

ToString에서 FormatProvider를 항상 * 사용 *해야하는 코딩 표준이있을 수 있습니다. 나쁘지는 않지만 가끔 과장되어 버립니다. –

관련 문제