【问题标题】:converting from int to hex从 int 转换为 hex
【发布时间】:2011-06-02 13:48:40
【问题描述】:

我想将一些整数转换为十六进制,但我得到的是这样的:"?|???plL4?h??N{" from 12345. 为什么?

int t = 12345;

System.Security.Cryptography.MD5CryptoServiceProvider ano = new
System.Security.Cryptography.MD5CryptoServiceProvider();

byte[] d_ano = System.Text.Encoding.ASCII.GetBytes(t.ToString());
byte[] d_d_ano = ano.ComputeHash(d_ano);

string st_data1 = System.Text.Encoding.ASCII.GetString(d_d_ano);
string st_data = st_data1.ToString();

我以窗口形式使用它,而不是在控制台中。

【问题讨论】:

  • 是什么让您认为这会将 int 转换为 hex?
  • MD5 是一种散列算法。它不会返回整数的十六进制值。
  • 所以这不是必需品吗?我不明白。我应该只使用 Babak 方式将 int 转换为字符串?
  • 实际上想要完成什么? “十六进制”是数字的十六进制表示法,当数字被写为人类可读的字符串时。它只是你需要的字符串吗?如果是,那么您不需要任何 MD5。
  • 但我想将我的 int 更改为另一个用户不知道的数字。我只想获取新数字的十六进制...

标签: c# string hex


【解决方案1】:

如果您只想进行转换,为什么还要使用加密?

对于实际的转换,使用这个sn -p

int myNumber = 42;
String myHexNumber = myNumber.ToString("X");

【讨论】:

  • @Oded:因为这回答了问题。问题不是“如何将整数转换为十六进制字符串?”但是“为什么我会得到我得到的结果。”
  • @Ben Voigt - 当答案中唯一的内容是第一行时,我发表了评论。
  • @Oded:我看到了。我的观点是,这里没有一篇其他帖子回答了“为什么?”这个单一的问题。只有 Babak 解释说显示的代码是加密值(它是一个哈希函数,所以它是单向加密,但它仍然是加密)。
【解决方案2】:
value.ToString("X") is all you need

【讨论】:

    【解决方案3】:
    int t = 12345;
    Console.WriteLine("{0:X4}", t);
    

    没有?

    【讨论】:

      【解决方案4】:

      要将数字转换为十六进制,只需使用:

      integerValue.ToString("X")
      

      【讨论】:

        【解决方案5】:

        使用Convert.ToString(intValue, 16);

        编辑:这种方式可以用于所有基础,例如Convert.ToString(intValue, 2)

        【讨论】:

          【解决方案6】:

          看起来您想将 int 转换为十六进制字符串。

          int t = 12345;
          string hex = t.ToString("x");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-17
            • 2016-09-21
            • 2016-03-23
            • 2013-08-07
            • 2015-12-09
            • 2013-02-10
            • 2019-06-13
            • 2020-03-01
            相关资源
            最近更新 更多