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 に答える