首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从字节数组的特定索引中删除字节

如何从字节数组的特定索引中删除字节
EN

Stack Overflow用户
提问于 2014-12-02 20:02:12
回答 4查看 4.5K关注 0票数 0

我有一个字节数组。我需要删除特定索引处的字节,并拆分字节数组。例如,假设我有一个长度为1000的字节数组。我需要删除从50到200 .So位置的字节,我的预期结果是2字节数组。一个是0-49,另一个是201-1000。

Array.RemoveAt是删除带索引的字节数组的唯一方法吗?

提前感谢!

EN

回答 4

Stack Overflow用户

发布于 2014-12-02 20:35:42

如果速度很重要,您可以创建两个新数组,并使用Array.Copy()将所需的字节复制到其中。

为了更容易使用,为数组编写一个小的扩展方法可能更方便,它提取并返回一个子集,如下所示(注意:为简洁起见,省略了错误处理):

代码语言:javascript
运行
复制
public static class ArrayExt
{
    public static T[] Subset<T>(this T[] array, int start, int count)
    {
        T[] result = new T[count];
        Array.Copy(array, start, result, 0, count);
        return result;
    }
}

然后您可以这样使用它(我已经更正了您示例中的索引;您的索引从201开始,但它应该是200):

代码语言:javascript
运行
复制
var array1 = new byte[1000];

// ... populate array1 somehow, then extract subsets like so:

var array2 = array1.Subset(  0,  50);
var array3 = array1.Subset(200, 800);

// Now array2 and array3 are two byte arrays 
// containing the required bytes.

这可能是您可能获得的最快速度。

票数 3
EN

Stack Overflow用户

发布于 2014-12-02 20:09:57

例如,您可以使用IEnumerable TakeSkip

代码语言:javascript
运行
复制
byte[] origin = new byte[200];
for(int i = 0; i < origin.Length; i++)
    origin[i] = (byte)i;

byte[] first = origin.Take(50).ToArray();
byte[] second = origin.Skip(100).Take(50).ToArray();
票数 2
EN

Stack Overflow用户

发布于 2014-12-02 20:24:47

下面的代码可以用来拆分字节数组," index“开始索引," count”是索引计数,你想拆分到哪个索引,这里的条件是index=50,count是150;

代码语言:javascript
运行
复制
List<byte> byteArray = array.ToList(); //array is the byte array
byteArray.RemoveRange(index, count);
Byte[] array1 = byteArray.ToArray(); //array1 is the resultant byte array
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27248973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档