在byte []中索引后获取字节

时间:2012-08-21 13:18:36

标签: c# bytearray

  

可能重复:
  C# arrays , Getting a sub-array from an existing array

基本上我有byte[]每次都会有所不同,但它的长度会相同。

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

如果这没有意义,这基本上就是我的意思。

"samebytesDataNeededIsHere"

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

3 个答案:

答案 0 :(得分:7)

怎么样

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

答案 1 :(得分:2)

你还没有说过你在做什么,但是在很多byte[]处理代码中你使用偏移到缓冲区...所以,而不是最初将这个偏移设置为{{1你将它设置为“相同字节”的长度。

如果要换行0,则可以在使用之前将MemoryStream转发到该号码。

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

示例:

Buffer.BlockCopy

答案 2 :(得分:0)

我认为你在询问如何从常量起始索引中检索字节数组的一部分。有多种方法可以做到这一点。

首先,一个简单的循环:

// 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...
}

您还可以使用Array.CopyTo将一个数组的一部分复制到一个新数组中。当然,如果你正在处理一个相当大的数组,最好不要复制它,而是迭代它或者将它作为流消费(如@MarcGravell建议的那样)。