2012-06-29 2 views
-1

Хорошо, прежде чем кто-либо попытается наметить это как дубликат, я не, запрашивающий строку в массив байтов. Я хочу массив строк, содержащий нечто подобное: {"5", "168", "188", "28", "29", "155"} для преобразования в массив байтов. Я искал и смог найти строку в байтовом массиве, что совсем другое. Благодарю.Преобразование строкового массива в массив байтов

Редактировать: массив будет предварительно установлен таким образом, чтобы каждый элемент обрабатывался байтом. Допустим, это не проблема.

+1

Просьба привести более конкретный пример. Что вы имеете в виду? – SLaks

+0

См. Ответ на сериализацию: http://stackoverflow.com/q/1446547/228080 –

+1

У вас есть строковый массив, например 'new string [] {" 5 "," 168 "," 188 "}' или строка, содержащая такой массив, как синтаксис, например '' [5,168,188] "'? – Guffa

ответ

4

Это подведет за все, что не может быть разобрано byte.Parse

var str = new[] {"5", "168", "188", "28", "29", "155"}; 
var byt = str.Select(byte.Parse).ToArray(); 
1

Предполагая, что вы имели в виду, что у вас есть массив строк, как string[] myArray = {"5","168",...};:

myArray.Select(x => byte.Parse(x)).ToArray(); 

Или:

myArray.Select(byte.Parse).ToArray(); 
1

Попробуйте следующее

С LINQ

string[] strings = new[] { "1", "2", "3", "4" }; 
byte[] byteArray = strings.Select(x => byte.Parse(x)).ToArray(); 

Без LINQ

string[] strings = { "1", "2", "3", "4" }; 

byte[] bytArr = new byte[strings.Length]; 

int i = 0; 

foreach(String text in strings) 
{ 
    bytArr[i++] = byte.Parse(text); 
} 
4

Вы должны разобрать каждую строку в байты и поместить в новом массиве. Вы можете просто цикл, хотя пункты и конвертировать каждый:

string[] strings = { "5", "168", "188", "28", "29", "155" }; 
byte[] bytes = new byte[strings.length]; 
for (int i = 0; i < strings.Length; i++) { 
    bytes[i] = Byte.Parse(strings[i]); 
} 

Вы можете также использовать Array.ConvertAll method для этого:

string[] strings = { "5", "168", "188", "28", "29", "155" }; 
byte[] bytes = Array.ConvertAll(strings, Byte.Parse); 

Вы также можете использовать расширения LINQ, чтобы сделать это:

string[] strings = { "5", "168", "188", "28", "29", "155" }; 
bytes = strings.Select(Byte.Parse).ToArray();