如何将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作为解密方法的参数。 感谢
答案 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);
}