【问题标题】:What is the meaning of ToString("X2")? [duplicate]ToString("X2") 是什么意思? [复制]
【发布时间】:2014-01-12 01:22:04
【问题描述】:

我正在研究 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();
}

为什么使用ToString("X2")?和普通的ToString有什么区别?

【问题讨论】:

  • 我试过了,我看到视觉差异,但我不知道它做了什么
  • msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx 。只需输入 tostring format 到 google 并导航到第一个结果。
  • 别抱歉!我们都在这里学习。
  • @L.B 仅供参考,就像 StackOverflow 上的许多“简单”问题一样,这个问题现在是 Google 某些搜索的第一个结果。出于这个原因,我认为这类问题总是有价值的。

标签: c# encryption tostring


【解决方案1】:

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

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

byte.ToString() 不带任何参数以自然十进制表示形式返回数字,不带填充。

Microsoft 记录了standard numeric format strings,它通常适用于所有原始数字类型的ToString() 方法。同样的模式也用于其他类型:例如,standard date/time format strings 可以与 DateTime.ToString() 一起使用。

【讨论】:

  • 如果有人读过 Clean Code 并在想......“我们可以在框架中得到这个名为 ToHexString() 的东西吗”......我们都可以停止编写自己的扩展函数了吗? X2 对我们中的一些人来说不仅仅是脑筋急转弯。也许是格式字符串“2HX”,但这只是想变得可爱。
  • 格式为两个大写十六进制字符的最小值。如果有两个以上,它将返回所有这些。所以 F 会以 0F 的形式返回,但 FFF 会以 FFF 的形式返回。
  • 是的,“X2”提供了两个值,可以根据需要单独控制。 2 指定要返回的最小字符数,而 X 指定根据大小写以十六进制输出。因此,虽然 X4 可能会产生 00FF,但 x4 会产生 00ff。
【解决方案2】:

它以十六进制格式打印byte

无格式字符串:13

'X2'格式字符串:0D

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 2015-01-22
      • 1970-01-01
      • 2020-10-27
      • 2015-07-15
      • 2018-07-17
      • 2012-08-13
      相关资源
      最近更新 更多