加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用Take()从字节数组中获取字节,在Take()之后转换回byte

发布时间:2020-12-15 23:34:29 所属栏目:百科 来源:网络整理
导读:byte[] result = memStream.ToArray(); memStream.Close();byte[] temp = result.Take(255);var str = System.Text.Encoding.Default.GetString(temp); 以上结果失败.采取(255);线.它说我无法将IEnumerable转换为byte [],并询问我是否错过了强制转换. 我是C#
byte[] result = memStream.ToArray();                              
memStream.Close();
byte[] temp = result.Take(255);
var str = System.Text.Encoding.Default.GetString(temp);

以上结果失败.采取(255);线.它说我无法将IEnumerable转换为byte [],并询问我是否错过了强制转换.

我是C#的新手,不确定该怎么做.

解决方法

Take()返回枚举时执行的枚举器对象:

enter image description here

这不是一个数组,因此您无法将其分配给对字节数组的引用.但是,使用LINQ,您可以通过调用其ToArray()方法获取任何序列并将其转换为适当类型的数组:

byte[] temp = result.Take(255).ToArray();

ToArray()枚举Take(255)的结果,将结果放入一个新数组,然后返回数组.

这有点令人困惑,因为你可以枚举一个数组,就像你可以枚举你从Take(255)得到的东西 – 但你可以枚举很多东西.这只是他们共同的一种行为,但它们实际上是非常不同的对象.

您可以将其中任何一个分配给IEnumerable< byte>:

IEnumerable<byte> a = result.Take(255);
IEnumerable<byte> b = result.Take(255).ToArray();

……因为这是他们真正有共同点的一件事.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读