将列表<字符串>的一部分转换为 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[]('的最佳重载方法匹配有一些无效的参数

如何正确做到这一点?

将列表<字符串>的一部分转换为 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>,其中包含子集中所有字符串的字节。但是您需要修复根本原因,即子集选择才能正常工作。