Преобразовать строку [] в массив байтов []

Я пытаюсь преобразовать этот массив строк в массив байтов.

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

I have tried the following code, but it does not work. _Byte = Array.ConvertAll(_str, Byte.Parse);

А также, было бы намного лучше, если бы я мог преобразовать следующий код непосредственно в байтовый массив: string s = "00 02 03 FF" вbyte[] _Byte = { 0x1, 0x2, 0x3, 0xFF};

 Ahmad Hafiz10 мая 2012 г., 11:40
да, это отсутствует на str части :)
 Marcelo Cantos10 мая 2012 г., 11:32
Является ли 0x3 опечаткой?
 Ahmad Hafiz10 мая 2012 г., 11:31
Да, это.....
 Dave Bish10 мая 2012 г., 11:30
Я предполагаю, что все строки описывают шестнадцатеричные числа?

Ответы на вопрос(6)

Array.ConvertAll если вы предпочитаете, но вы должны указать базу 16. Так что либо

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

или же

_Byte = Array.ConvertAll(_str, s => Convert.ToByte(s, 16));
 10 мая 2012 г., 11:49
Не знал об этом решении. Ницца :)
 10 мая 2012 г., 11:54
Конечно, вы можете использоватьstring[] _str = stringWithSpaces.Split(' '); создавать_str во-первых, как уже отмечали другие.

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

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

Если у вас есть одна строкаstring s = "0002FF"; ты можешь использоватьэтот ответ

 Ahmad Hafiz10 мая 2012 г., 11:41
да это тоже работает, большое спасибо :)
Решение Вопроса

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();
 10 мая 2012 г., 11:42
@AhmadHafiz круто :) Также добавлено решение для преобразования строки. Вы можете пометить мой ответ как ответ, если он вам помог :)
 13 июн. 2012 г., 15:31
@ Ноли ониare тот же самый. & Quot; 0A & Quot; 10 в шестнадцатеричной записи. Он просто отображается в десятичном формате. Значение верное.
 Ahmad Hafiz10 мая 2012 г., 11:41
да это работает: D
 13 июн. 2012 г., 15:22
Я знаю, что эта ветка старая, но у меня тут проблема. Если я преобразую свою строку [] в byte [], я получу, например, [0] & quot; 70 & quot; строка [1] "34" строка [2] & quot; 0A & quot; строка в [0] 112 байт [1] 52 байт [2] 10 байт Но мне нужны те же символы, что и в байтах.
 13 июн. 2012 г., 18:34
Ооооо это так .... Я провел часы ... Но спасибо ооочень большое за это! Спасибо!

byte[] _Byte = _str.Select(s => Byte.Parse(s)).ToArray()
 28 июл. 2015 г., 20:02
Конечно помог мне: D
 10 мая 2012 г., 11:37
Не помогу. Его проблема в том, чтоByte.Parse не будет принимать строку в шестнадцатеричном формате.

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

Ваш ответ на вопрос