C# 获取字节[]中索引后的字节

C# 获取字节[]中索引后的字节,c#,bytearray,C#,Bytearray,可能重复: 基本上,我有一个字节[],它每次都会不同,但长度会相同 然后,在那之后,我有更多的字节和我需要的数据 如果这不合理,这基本上就是我的意思 "samebytesDataNeededIsHere" 所以我需要在“samebytes”之后获取数据,但我不知道该怎么做。我已经搜索过了,除了字节模式之外,这方面真的什么都没有,这不是我真正需要的。你还没有说你在用它做什么,但是在很多字节[]处理代码时,你会在缓冲区中使用偏移量。。。因此,不是最初将该偏移量设置为0,而是将其设置为“相同字节”

可能重复:

基本上,我有一个
字节[]
,它每次都会不同,但长度会相同

然后,在那之后,我有更多的字节和我需要的数据

如果这不合理,这基本上就是我的意思

"samebytesDataNeededIsHere"

所以我需要在“samebytes”之后获取数据,但我不知道该怎么做。我已经搜索过了,除了字节模式之外,这方面真的什么都没有,这不是我真正需要的。

你还没有说你在用它做什么,但是在很多
字节[]
处理代码时,你会在缓冲区中使用偏移量。。。因此,不是最初将该偏移量设置为
0
,而是将其设置为“相同字节”的长度

如果要在
MemoryStream
中换行,只需将
位置
设置为该数字,然后再使用它即可

最后,您可以使用指定起始偏移量的
Buffer.BlockCopy
,将所需数据复制出来。这是我最不喜欢的选择,因为第二个缓冲区和块拷贝是多余的(我们已经有了数据,并且知道我们想要查看的位置)

示例:

// invent some initial data
byte[] data = Encoding.ASCII.GetBytes("samebytesDataNeededIsHere");
int fixedOffset = 9; // length of samebytes

// as a segment
ArraySegment<byte> segment = new ArraySegment<byte>(data,
     fixedOffset, data.Length - fixedOffset);

// as a separate buffer
byte[] copy = new byte[data.Length - fixedOffset];
Buffer.BlockCopy(data, fixedOffset, copy, 0, copy.Length);

// as a stream
var ms = new MemoryStream(data, fixedOffset, data.Length - fixedOffset);

// or just directly
for(int i = fixedOffset ; i < data.Length ; i++) {
   // access data[i]
}
//发明一些初始数据
byte[]data=Encoding.ASCII.GetBytes(“samebytesdatanedeshere”);
int fixedOffset=9;//相同字节的长度
//作为一部分
ArraySegment段=新的ArraySegment(数据,
fixedOffset,data.Length-fixedOffset);
//作为单独的缓冲区
byte[]copy=新字节[data.Length-fixedOffset];
块复制(数据,固定偏移,复制,0,复制.长度);
//如溪流
var ms=新内存流(data,fixedOffset,data.Length-fixedOffset);
//或者直接
for(inti=fixedOffset;i
我想您是在问如何从常量起始索引检索字节数组的一部分。有多种方法可以做到这一点

首先,一个简单的循环:

// make sure you use the correct encoding
// see http://msdn.microsoft.com/en-us/library/ds4kkd55.aspx
byte[] bytes = Encoding.UTF8.GetBytes( "samebytesDataNeededIsHere" );

for( int i = startIndex; i < bytes.Length; i++ ){
  byte b = bytes[i]; // now do something with the value...
}
//确保使用正确的编码
//看http://msdn.microsoft.com/en-us/library/ds4kkd55.aspx
byte[]bytes=Encoding.UTF8.GetBytes(“samebytesdatanededishere”);
for(int i=startIndex;i
您还可以使用将一个数组的一部分复制到新数组中。当然,如果您要处理一个很大的数组,最好不要复制它,而是遍历它或将其作为流使用(正如@marcgravel所建议的那样)。

怎么样

byte[] bytes = Encoding.UTF8.GetBytes("samebytesDataNeededIsHere");
byte[] bytesToUse = bytes.Skip(countOfBytesToSkip).ToArray();

一个字节就是一个字节,你说的长度是什么意思?你能重新思考一下你的问题吗?请发布一些示例代码来说明你的意思。对不起,我不明白你要的是什么。@0A0D这是一个字节数组。@MarcGravel我想他的意思是他想要原始的子数组。谢谢,我是用MemoryStream得到的。