byte collection based similar with ByteBuffer from java
20,274
Solution 1
MemoryStream
can do everything you want:
.array()
=>.ToArray()
.clear()
=>.SetLength(0)
.put(byte[], int, int)
=>.Write(byte[], int, int)
.remaining()
=>.Length - .Position
If you want, you can create extension methods for Clear
and Remaining
:
public static class MemoryStreamExtensions
{
public static void Clear(this MemoryStream stream)
{
stream.SetLength(0);
}
public static int Remaining(this MemoryStream stream)
{
return stream.Length - stream.Position;
}
}
Solution 2
MemoryStream should have everything you are looking for. Combined with BinaryWriter to write different data types.
var ms = new MemoryStream();
ms.SetLength(100);
long remaining = ms.Length - ms.Position; //remaining()
byte[] array = ms.ToArray(); //array()
ms.SetLength(0); //clear()
ms.Write(buffer, index, count); //put(byte[], int, int)
Author by
pulancheck1988
Updated on July 09, 2022Comments
-
pulancheck1988 almost 2 years
I need a C# implementation of something similar with ByteBuffer from Java. Methods of interest - .remaining() - returns the number of elements between the current position and the limit. - .array() - .clear() - .put(byte[], int, int)
I started something with
MemoryStream
.. but noclear()
, and a lot of improvisation Also, i found a c# implementation on Koders: http://www.koders.com/csharp/fid2F8CB1B540E646746D3ADCB2B0AC867A0A8DCB06.aspx?s=socket#L2.. which I will use.. but maybe you guys know something better -
Ben Voigt about 12 yearsQueue only allows adding and removing single elements.
-
Paul over 10 yearsWhat about
ByteBuffer.allocate(int)
? -
Thomas Levesque over 10 years@Paul,
new MemoryStream(int)