Байты записываются в объект MemoryStream, и необходимо получить базовый буфер, чтобы сохранить его в файл.

MemoryStream ms = new MemoryStream();
// ms.Write(...)
// ms.Write(...)
// etc... some bytes are written to the stream

byte[] data = ms.GetBuffer();
int length = data.Length;

Однако возвращаемый data имеет емкость ms, а не реальную длину ms.

Что лучше (быстрее, безопаснее, ...): установить емкость ms на его длину или выделить data и скопировать в него содержимое ms?

0
Chesnokov Yuriy 29 Авг 2011 в 17:06

3 ответа

Лучший ответ

Просто используйте метод-член ms.ToArray()

2
Random Dev 29 Авг 2011 в 13:08

GetBuffer () был разработан, чтобы избежать потенциально дорогостоящего выделения массива. Вы можете использовать метод ToArray (), если вам нужен byte [] подходящего размера.

2
Hans Passant 29 Авг 2011 в 13:09

Когда вы не ищите случайные места, вы также можете использовать позицию потока:

Debug.Log("All length: " + (int)ms.Position);
0
kungfooman 5 Ноя 2014 в 12:25