从字符串文本框到十六进制0x字节[]c#

From String textBox to hex 0x byte[] c#

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?

我有一个文本框,输入字符串"a a 11 22 33 44 55 66 77 88 99 a a bb cc dd ee ff",我将其拆分为字符串[],但现在我必须得到这样的字节[]。

1
byte[] b6 = new byte[20] {0xAA,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88 ,0x99 ,0xAA ,0xBB,0xCC ,0xDD ,0xEE,0xFF};

有人能告诉我怎么做吗?我试图使用Convert.ToByte,但我得到了不可能将String转换为byte.的错误,我不需要转换十六进制的值,只需要在每个字节前面添加0x,然后添加到字节数组中。


1
2
string input ="AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF";
byte[] bytes = input.Split().Select(s => Convert.ToByte(s, 16)).ToArray();


尝试

1
int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

并将其添加到列表中。

1
2
3
4
5
List<Byte> bytes = new List<Byte>();
foreach (var splittedValue in hexString.Split(' ')) {
    bytes.Add(int.Parse(splittedValue, System.Globalization.NumberStyles.HexNumber));
}
return bytes.ToArray();


您可以使用byte.Parse

1
byte[] bytes = str.Split().Select(s => byte.Parse(s, NumberStyles.HexNumber)).ToArray();

要以十六进制表示方式显示字节,请使用ToString重写:

1
2
3
4
5
foreach (var b in bytes)
{
    Console.WriteLine("0x{0:X}", b);
    //or Console.WriteLine("0x" + b.ToString("X"));
}

您还可以在string.Format中使用"x"格式及其修改。


可以使用ToString函数