9

我正在尝试将此字符串数组转换为字节数组。

string[] _str= { "01", "02", "03", "FF"};byte[] _Byte = { 0x1, 0x2, 0x3, 0xFF};

我已经尝试了以下代码,但它不起作用。 _Byte = Array.ConvertAll(_str, Byte.Parse);

而且,如果我可以将以下代码直接转换为字节数组会更好 string s = "00 02 03 FF"byte[] _Byte = { 0x1, 0x2, 0x3, 0xFF};

4

6 回答 6

14

这应该有效:

byte[] bytes = _str.Select(s => Convert.ToByte(s, 16)).ToArray();

使用Convert.ToByte,您可以指定要转换的基数,在您的情况下,它是 16。

如果你有一个用空格分隔值的字符串,你可以使用String.Split它来分割它:

string str = "00 02 03 FF"; 
byte[] bytes = str.Split(' ').Select(s => Convert.ToByte(s, 16)).ToArray();
于 2012-05-10T09:34:44.817 回答
3

尝试使用 LINQ:

byte[] _Byte = _str.Select(s => Byte.Parse(s)).ToArray()
于 2012-05-10T09:32:42.457 回答
2

使用 LINQ 是最简单的方法:

byte[] _Byte = _str.Select(s => Byte.Parse(s, 
                                           NumberStyles.HexNumber,
                                           CultureInfo.InvariantCulture)
                          ).ToArray();

如果你有一个字符串 string s = "0002FF";,你可以使用这个答案

于 2012-05-10T09:35:47.400 回答
1

如果您愿意,您仍然可以使用Array.ConvertAll,但您必须指定基数 16。所以要么

_Byte = Array.ConvertAll(_str, s => Byte.Parse(s, NumberStyles.HexNumber));

或者

_Byte = Array.ConvertAll(_str, s => Convert.ToByte(s, 16));
于 2012-05-10T09:47:23.167 回答
1

如果你想使用 ConvertAll 你可以试试这个:

byte[] _Byte = Array.ConvertAll<string, byte>(
    _str, s => Byte.Parse(s, NumberStyles.AllowHexSpecifier));
于 2012-05-10T09:47:36.830 回答
0

试试这个:

var bytes = str.Select(s => Byte.Parse(s, NumberStyles.HexNumber)).ToArray();
于 2012-05-10T09:36:20.363 回答