2016-05-27 3 views
0

я могу преобразовать string[] в byte[], как в следующем коде:Как преобразовать массив строк в массив байтов, используя Array ConvertAll?

byte[] k = {255, 150, 155, 255, 255, 255, 255, 255, 255, 255, 55, 55, 15, 55, 155, 55}; 
string st = BitConverter.ToString(Array.ConvertAll(k, Convert.ToByte));  
byte[] kk = new byte[16]; 
string[] sts = st.Split('-');    
for (int i = 0; i < 16; i++) 
{ 
    kk[i] = Convert.ToByte(sts[i], 16); 
} 

Но я не могу сделать то же самое с LINQ как в коде ниже:

Array.ConvertAll(sts,item=>(byte) Convert.ToByte(item, 16)) 

Как сделать эту работу в LINQ?

Почему он не работает в «Немедленном окне» Visual Studio?

Лямбда-выражения не работают в окнах «Немедленное» и «Смотреть».

ответ

0

Ваш код действительно работает. Может быть, вы забыли точку с запятой:

var a = Array.ConvertAll(sts, s => Convert.ToByte(s, 16)); 
+0

Спасибо .. это работало. Но почему это вызывает ошибку в окне Immediate (во время отладки)? –

+0

Я не понимаю ваш вопрос. Я не догоняю никаких исключений или ошибок. –

+0

Когда я пытаюсь использовать тот же код (при отладке) в окне «Немедленное окно» ошибки Visual Studio 2015 System.NotSupportedException. –

0

Вот элегантное решение для преобразования из массива байт (или двойного массива) в строку и из строки в байтах/двойной массив. :)

double[] k = {255, 150, 155, 25, 2, 55, 66}; 
string st = BitConverter.ToString(Array.ConvertAll(k, Convert.ToByte)); 

И из строки в двойной массив ...

double[] kk = Array.ConvertAll(st.Split('-'), s => (double) Convert.ToByte(s, 16)); 
Смежные вопросы