How do you do it? Given a byte array:
byte[] foo = new byte[4096];
How would I get the first x bytes of the array as a separate array? (Specifically, I need it as an IEnumerable<byte>)
This is for working with Sockets. I figure the easiest way would be array slicing, similar to Perls syntax:
@bar = @foo[0..40];
Which would return the first 41 elements into the @bar array. Is there something in C# that I’m just missing, or is there some other thing I should be doing?
LINQ is an option for me (.NET 3.5), if that helps any.
Arrays are enumerable, so your
fooalready is anIEnumerable<byte>itself. Simply use LINQ sequence methods likeTake()to get what you want out of it (don’t forget to include theLinqnamespace withusing System.Linq;):If you really need an array from any
IEnumerable<byte>value, you could use theToArray()method for that. That does not seem to be the case here.