如何将字符串转换为十六进制字节数组?

10

可能重复:
如何在C#中将字节数组转换为十六进制字符串,反之亦然?

为了测试我的加密算法,我已经得到了密钥、明文和它们所产生的密文。

这些密钥和明文都是字符串。

我该如何将它们转换为十六进制的字节数组呢?

类似于这样:E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FA

转换后结果如下:

byte[] key = new byte[16] { 0xE8, 0xE9, 0xEA, 0xEB, 0xED, 0xEE, 0xEF, 0xF0, 0xF2, 0xF3, 0xF4, 0xF5, 0xF7, 0xF8, 0xF9, 0xFA} ;

提前感谢 :)


1
将十六进制字符串转换为字节数组 - jdehaan
重复的内容,请转到https://dev59.com/Y3VC5IYBdhLWcg3wYQEp。虽然那里展示了不同的解决方案,但也许所有话题都可以存在 :) - 0x49D1
3个回答

16

你需要这个吗?

static class HexStringConverter
{
    public static byte[] ToByteArray(String HexString)
    {
        int NumberChars = HexString.Length;
        byte[] bytes = new byte[NumberChars / 2];
        for (int i = 0; i < NumberChars; i += 2)
        {
            bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16);
        }
        return bytes;
    }
}
希望能对你有所帮助。

1

来自MSDN的示例代码:

string hexValues = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";
string[] hexValuesSplit = hexValues.Split(' ');
foreach (String hex in hexValuesSplit)
{
    // Convert the number expressed in base-16 to an integer.
    int value = Convert.ToInt32(hex, 16);
    // Get the character corresponding to the integral value.
    string stringValue = Char.ConvertFromUtf32(value);
    char charValue = (char)value;
    Console.WriteLine("hexadecimal value = {0}, int value = {1}, char value = {2} or {3}", hex, value, stringValue, charValue);
}

你只需要将字符串的分割方式从空格改为每两个字符分割一次。


0

你是指这个吗?

StringBuilder Result = new StringBuilder();
    string HexAlphabet = "0123456789ABCDEF";

    foreach (byte B in Bytes)
        {
        Result.Append(HexAlphabet[(int)(B >> 4)]);
        Result.Append(HexAlphabet[(int)(B & 0xF)]);
        }

    return Result.ToString();

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