将List <string>的一部分转换为byte []

时间:2015-12-26 17:50:19

标签: c# list bytearray

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;有一些无效的论点

这是怎么做到的?

1 个答案:

答案 0 :(得分:0)

我不确定您希望拨打K[i >> 3]的电话。你的标题是&#34;转换List&#34;的一部分,但它的作用只是从List<string>返回一个字符串。

接下来,您在该字符串上调用SelectMany()。由于stringIEnumerable<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>包含子集中所有字符串的字节。但是你需要修复你的根本原因,即子集选择,才能发挥作用。