将列表<字符串>的一部分转换为 byte[]
本文关键字:转换 byte 一部分 列表 字符串 | 更新日期: 2023-09-27 18:28:03
List<string> K = new List<string>();
byte[] tmp = K[i >> 3].SelectMany(s => Encoding.Default.GetBytes(s)).ToArray();
我绑定转换,但有一个错误:
'System.Text.Encoding.GetString(byte[]('的最佳重载方法匹配有一些无效的参数
如何正确做到这一点?
我不确定你希望调用K[i >> 3]
做什么。您的标题说"转换列表的一部分",但它的作用只是从您的List<string>
中返回一个字符串。
接下来,对该字符串调用SelectMany()
。由于string
是一个IEnumerable<char>
,SelectMany
调用尝试在字符串中的每个char
上调用Encoding.Default.GetBytes()
,并将每次调用返回的结果byte[]
返回到组合IEnumerable<byte>
中。此操作失败,因为Encoding.Default.GetBytes()
需要字符串参数,而不是字符。
根据您的标题,我希望您期望K[i >> 3]
返回包含原始List<string>
子集的IEnumerable<string>
。如果是这样,你的代码将是有意义的 - SelectMany
会将子集中的每个字符串传递给GetBytes
,这将返回一个byte[]
,该将被连接到一个更大的IEnumerable<byte>
,其中包含子集中所有字符串的字节。但是您需要修复根本原因,即子集选择才能正常工作。