从文本框获取数据并以指定格式转换为字节数组

时间:2013-12-27 17:45:21

标签: c# winforms

如何将16个字符的输入转换为具有以下格式的字节数组。 例如。从textBox.Text = 4a4de6878247d37b

byte[] esk_bytearr = { 0x4a, 0x4d, 0xe6, 0x87, 0x82, 0x47, 0xd3, 0x7b };

我正在使用的方法不起作用,如下所示。

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;
}

字节数组是使用DES的解密方法的输入。该方法正在工作,但解密的消息不同于我直接使用esk_bytearr作为解密方法的参数。 感谢

2 个答案:

答案 0 :(得分:1)

您正在寻找的是一种从十六进制字符串转换为字节数组的方法。堆栈溢出已经回答了几次。例如:

How do you convert Byte Array to Hexadecimal String, and vice versa?

答案 1 :(得分:1)

使用循环遍历每个十六进制对,使用byte指定Convert.ToByte将其转换为base16

var hex = @"4a4de6878247d37b";
int hexLength = hex.Length;
byte[] bytes = new byte[hexLength / 2];
for (int i = 0; i < hexLength; i += 2)
{
    bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
}