【问题标题】:C# convert ReadOnlyCollection<int> to byte[] arrayC# 将 ReadOnlyCollection<int> 转换为 byte[] 数组
【发布时间】: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的可能重复

标签: c# arrays type-conversion readonly-collection


【解决方案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
猜你喜欢
  • 2014-03-05
  • 2020-02-03
  • 2022-01-11
  • 1970-01-01
  • 2011-08-19
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多