繁体   English   中英

将String []转换为byte []数组

[英]Convert String[] to byte[] array

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

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[] 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 ,但必须指定基数为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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM