C# 将 ReadOnlyCollection<int> 转换为 byte[] 数组

Posted

技术标签:

【中文标题】C# 将 ReadOnlyCollection<int> 转换为 byte[] 数组【英文标题】:C# convert ReadOnlyCollection<int> to byte[] array 【发布时间】:2018-08-31 11:01:18 【问题描述】:

给定一个只读的整数集合,如何将其转换为字节数组?

ReadOnlyCollection<int> collection = new List<int>  118,48,46,56,46,50 .AsReadOnly(); //v0.8.2

将 'collection' 转换为 byte[] 的优雅方法是什么?

【问题讨论】:

是的,0到225。我打算用bitConverter把它转成字符串。至于字节序,两者都可以。 C# int byte conversion的可能重复 【参考方案1】:

您可以使用 LINQ 的 Select 方法将每个元素从 int 转换为 byte。 这会给你一个IEnumerable&lt;byte&gt;。然后,您可以使用ToArray() 扩展方法将其转换为byte[]

collection.Select(i => (byte)i).ToArray();

如果您不想使用 LINQ,则可以实例化数组并使用 for 循环来迭代集合,从而为数组中的每个值赋值。

var byteArray = new byte[collection.Count];

for (var i = 0; i < collection.Count; i++)

    byteArray[i] = (byte)collection[i];

【讨论】:

int 不能简单地转换为byte 我认为如果值为 0 到 255 @Backs 可以吗? 强制转换始终是可能的,超出字节范围的值将被截断。 LINQ 是否保证订单? @RotemVaron 的顺序将与原始集合相同,除非您指定OrderBy

以上是关于C# 将 ReadOnlyCollection<int> 转换为 byte[] 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用带有 HashSet<ReadOnlyCollection<string>> 类型的 exceptWith?

将 ReadOnlyCollection<byte> 写入流

ReadOnlyCollection 或 IEnumerable 用于公开成员集合?

更新 GridView 中的 ReadOnlyCollection

将 Dictionary<TKey, List<TValue>> 转换为 ReadOnlyDictionary<TKey, ReadOnlyCollection<T

根据 FxCop,为啥 ReadOnlyCollection<ReadOnlyCollection<T>> 不好,以及在生成不可变二维对象时有啥替代方法? [复制]