可能重复:
C# arrays , Getting a sub-array from an existing array
基本上我有byte[]
每次都会有所不同,但它的长度会相同。
然后,在那之后,我有更多的字节包含我需要的数据。
如果这没有意义,这基本上就是我的意思。
"samebytesDataNeededIsHere"
所以我需要在“samebytes”之后获取数据,我不知道该怎么做。我已经搜索过了,除了字节模式之外,其实并没有什么,这不是我需要的。
答案 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建议的那样)。