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

Posted

技术标签:

【中文标题】如何将字符串转换为十六进制字节数组? [复制]【英文标题】:How to convert a String to a Hex Byte Array? [duplicate] 【发布时间】:2011-02-27 15:55:33 【问题描述】:

可能重复:How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?

为了测试我的加密算法,我得到了密钥、纯文本及其生成的密文。

密钥和明文都在字符串中

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

类似这样的东西:E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FA

到这样的事情:

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

提前感谢:)

【问题讨论】:

重复***.com/questions/321370/… ***.com/questions/311165/… 的副本。尽管那里显示了不同的解决方案,所以也许所有主题都可以生存:) 【参考方案1】:

Do you need this?

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;
    

希望对你有帮助。

【讨论】:

【参考方案2】:

来自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);

您只需更改它以将字符串拆分为每 2 个字符而不是空格。

【讨论】:

【参考方案3】:

你是不是这个意思

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();

【讨论】:

以上是关于如何将字符串转换为十六进制字节数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将字节数组转换为字符串? [复制]

如何将普通字符串转换为等效的十六进制字节数组? [复制]

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

如何将十六进制字符串转换为字节数组,以及十六进制字符串中的字节数组?

在C++中,如何把字节数组转换成字符串