List<string> K = new List<string>();
byte[] tmp = K[i >> 3].SelectMany(s => Encoding.Default.GetBytes(s)).ToArray();
我想转换,但有一个错误:
最佳重载方法匹配&#39; System.Text.Encoding.GetString(byte [])&#39;有一些无效的论点
这是怎么做到的?
答案 0 :(得分:0)
我不确定您希望拨打K[i >> 3]
的电话。你的标题是&#34;转换List&#34;的一部分,但它的作用只是从List<string>
返回一个字符串。
接下来,您在该字符串上调用SelectMany()
。由于string
是IEnumerable<char>
,SelectMany
调用会尝试在字符串中的每个Encoding.Default.GetBytes()
上调用char
,并返回从中返回的结果byte[]
每次调用合并IEnumerable<byte>
。这失败了,因为Encoding.Default.GetBytes()
需要字符串参数,而不是 char 。
根据您的标题,我希望您希望K[i >> 3]
返回包含原始IEnumerable<string>
子集的List<string>
。如果确实如此,那么您的代码就有意义了 - SelectMany
会将子集中的每个字符串传递给GetBytes
,这会返回byte[]
,这将会连接到更大的IEnumerable<byte>
包含子集中所有字符串的字节。但是你需要修复你的根本原因,即子集选择,才能发挥作用。