我正在尝试将此字符串数组转换为字节数组。
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};
答案 0 :(得分:13)
这应该有效:
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();
答案 1 :(得分:3)
尝试使用LINQ:
byte[] _Byte = _str.Select(s => Byte.Parse(s)).ToArray()
答案 2 :(得分:2)
使用LINQ是最简单的方法:
byte[] _Byte = _str.Select(s => Byte.Parse(s,
NumberStyles.HexNumber,
CultureInfo.InvariantCulture)
).ToArray();
如果您有一个字符串string s = "0002FF";
,则可以使用this answer
答案 3 :(得分:1)
如果您愿意,仍然可以使用Array.ConvertAll
,但必须指定基数16.所以
_Byte = Array.ConvertAll(_str, s => Byte.Parse(s, NumberStyles.HexNumber));
或
_Byte = Array.ConvertAll(_str, s => Convert.ToByte(s, 16));
答案 4 :(得分:1)
如果您想使用ConvertAll,可以试试这个:
byte[] _Byte = Array.ConvertAll<string, byte>(
_str, s => Byte.Parse(s, NumberStyles.AllowHexSpecifier));
答案 5 :(得分:0)
试试这个:
var bytes = str.Select(s => Byte.Parse(s, NumberStyles.HexNumber)).ToArray();