将字符串 [] 转换为 byte[] 数组

本文关键字:byte 数组 转换 字符串 | 更新日期: 2023-09-27 18:33:40

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

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

将字符串 [] 转换为 byte[] 数组

这应该有效:

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();

尝试使用 LINQ:

byte[] _Byte = _str.Select(s => Byte.Parse(s)).ToArray()

使用 LINQ 是最简单的方法:

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

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

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

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

_Byte = Array.ConvertAll(_str, s => Convert.ToByte(s, 16));
如果你想

使用ConvertAll,你可以试试这个:

byte[] _Byte = Array.ConvertAll<string, byte>(
    _str, s => Byte.Parse(s, NumberStyles.AllowHexSpecifier));

试试这个:

var bytes = str.Select(s => Byte.Parse(s, NumberStyles.HexNumber)).ToArray();