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<byte>
。然后,您可以使用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>> 不好,以及在生成不可变二维对象时有啥替代方法? [复制]