如何在C#.net中将字符串转换为十六进制

时间:2014-01-25 11:12:36

标签: c# .net

我有字符串,想在C#.net。

中将其转换为十六进制

这是我的Eset Nod32密码:

"12968"

程序将此密码保存为二进制注册表项:

"50 d6 e6 e9 e4 f0 cd f2 63 64"

我怎样才能在C#中做到这一点?

2 个答案:

答案 0 :(得分:0)

如果你想获得每个数字的十六进制,例如Hex为1,Hex为2等,你可以这样做:

string input = "12968";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
    // Get the integral value of the character. 
    int value = Convert.ToInt32(letter);
    // Convert the decimal value to a hexadecimal value in string form. 
    string hexOutput = String.Format("{0:X}", value);
    Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}

或者如果你想得到一个完整的字符串作为一个浮点数,例如这就是:

string hexString = "12968";
uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);

byte[] floatVals = BitConverter.GetBytes(num);
float f = BitConverter.ToSingle(floatVals, 0);
Console.WriteLine("float convert = {0}", f);

答案 1 :(得分:0)

可以使用以下命令将二进制值写入注册表

static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}

RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryValueKindExample");
rk.SetValue("BinaryValue", GetBytes("12968"), RegistryValueKind.Binary);

RegistryKey.SetValue Method