从整数转换为十六进制

4

我想将一些整数转换为十六进制,但是我得到了类似这样的结果:"?|???plL4?h??N{",而不是从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();

我正在使用Windows窗体,而不是控制台。


你为什么认为那会将一个整数转换为十六进制? - SLaks
MD5是一种哈希算法。它不会返回一个整数的十六进制值。 - Oded
那么这不是必要的吗?我不明白。我只需要按照Babak的方法将int转换为string吗? - Catherine
您实际上想要完成什么任务?“Hex”是一个十六进制数字表示法,当该数字以人类可读的字符串形式编写时。您只需要字符串吗?如果是,则不需要任何MD5。 - Eugene Mayevski 'Callback
但我想将我的整数更改为另一个用户不知道的数字。我只想得到新数字的十六进制... - Catherine
6个回答

9

将数字转换成十六进制,只需使用以下方法:

integerValue.ToString("X")

5

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

对于实际的转换,请使用以下代码片段

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

@Oded:因为这回答了问题。问题不是“如何将整数转换为十六进制字符串?”,而是“我为什么得到这样的结果”。 - Ben Voigt
1
@Ben Voigt - 当时回答中只有第一行代码时,我已经进行了评论。 - Oded
@Oded:我看到了。我的观点是这里没有其他任何帖子回答了那个单一的问题“为什么?”。只有Babak解释了所展示代码正在加密这个值(它是一个哈希函数,因此是单向加密,但它仍然是加密)。 - Ben Voigt

3
int t = 12345;
Console.WriteLine("{0:X4}", t);

no?


3
value.ToString("X") is all you need

2

使用Convert.ToString(intValue, 16);可以将整数转换为十六进制字符串。

编辑:这种方法可用于所有进制,例如Convert.ToString(intValue, 2)


2

看起来你想将整数转换为十六进制字符串。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接