ToString("X2")的含义是什么?

Lai*_*290 76 c# encryption tostring

我正在研究加密MD5,我在谷歌找到了这个代码

    public string CalculateMD5Hash(string input)
    {

        // Primeiro passo, calcular o MD5 hash a partir da string
        MD5 md5 = System.Security.Cryptography.MD5.Create();
        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
        byte[] hash = md5.ComputeHash(inputBytes);

        // Segundo passo, converter o array de bytes em uma string haxadecimal
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hash.Length; i++)
        {
            sb.Append(hash[i].ToString("X2"));
        }
        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

但为什么它使用ToString("X2")?ToString正常有什么区别?

Typ*_*eIA 95

它将字符串格式化为两个大写十六进制字符.

更深入地说,参数"X2"是一个"格式字符串",它告诉ToString()方法应该如何格式化字符串.在这种情况下,"X2"表示字符串应格式化为十六进制.

byte.ToString() 没有任何参数返回其自然十进制表示中的数字,没有填充.

Microsoft记录标准数字格式字符串,它通常适用于所有原始数字类型的ToString()方法.同样的模式也用于其他类型:例如,可以使用标准日期/时间格式字符串DateTime.ToString().

  • 万一有人读了Clean Code并在想……“我们可以在框架中得到这个名为ToHexString()的东西”……我们都可以停止编写自己的扩展函数了吗?对于我们中的某些人来说,X2不仅动弹了。也许是格式字符串“ 2HX”,但这只是想变得可爱。 (3认同)
  • 格式为最少两个大写十六进制字符。如果超过两个,它将返回全部。因此 F 将返回为 0F,但 FFF 将返回为 FFF。 (3认同)

Dav*_*ych 44

byte以十六进制格式打印.

没有格式字符串:13

'X2'格式字符串:0D

http://msdn.microsoft.com/en-us/library/aa311428(v=vs.71).aspx


Dom*_* B. 9

ToString("X2")以十六进制打印输入