4

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

我有一个输入字符串“AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF”的文本框,我将它拆分为字符串[],但现在我必须得到一个字节[]这:

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在每个字节前面添加并添加到字节数组中。

4

4 回答 4

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();
于 2012-10-31T13:25:13.307 回答
1

尝试

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

对于字符串的每个拆分元素并将其添加到列表中。

List<Byte> bytes = new List<Byte>();
foreach (var splittedValue in hexString.Split(' ')) {
    bytes.Add(int.Parse(splittedValue, System.Globalization.NumberStyles.HexNumber));
} 
return bytes.ToArray();
于 2012-10-31T13:25:41.260 回答
0

您可以使用byte.Parse

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

要以十六进制表示形式显示字节,请使用 ToString 覆盖:

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

您还可以使用“X”格式及其在string.Format.

于 2012-10-31T13:24:20.243 回答
-3

你可以使用tostring函数

于 2012-10-31T14:21:47.907 回答