0

我可以在下面的代码中转换string[]为like:byte[]

 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 的“立即窗口”中不起作用?

Lambda 表达式在“立即”和“观察”窗口中不起作用。

4

2 回答 2

0

您的代码确实有效。也许你忘记了分号:

 var a = Array.ConvertAll(sts, s => Convert.ToByte(s, 16));
于 2016-05-27T10:20:25.660 回答
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));
于 2016-05-27T11:11:45.757 回答