Что эквивалентно Java ByteBuffer.wrap в C #?

byte[] input = new byte[] {2, 4, 5, 2, 1};
ByteBuffer bytebuf = ByteBuffer.wrap(input);

ByteBuffer.wrap(byte[] array) делает буфер и массив взаимосвязанными, модификации буфера приведут к изменению массива и наоборот.

Эквивалент ByteBuffer в C # - поток памяти. Но я не знаю, как связать поток памяти с массивом, как это сделал метод ByteBuffer.wrap().

Может кто-нибудь сказать, что эквивалент ByteBuffer.wrap() в C #? Я искал везде, но не нашел ответа.

Заранее спасибо.


person NoeL    schedule 04.08.2013    source источник
comment
Возможно, вам стоит взглянуть на этот вопрос. stackoverflow.com/ questions / 10078348 /   -  person kkaosninja    schedule 04.08.2013
comment
привет @Krishna, я прочитал этот пост, но он все равно не помог.   -  person NoeL    schedule 04.08.2013
comment
Я не знаю, какого точного поведения вам не хватает в связанном вопросе, но проверьте конструкторы MemoryStream - есть один, чтобы использовать данный массив в качестве буфера ...   -  person Alexei Levenkov    schedule 04.08.2013
comment
Зачем вам нужны связанные таким образом массив и операции с байтами?   -  person William Morrison    schedule 04.08.2013


Ответы (1)


Используйте двоичный модуль записи и поток памяти.

Я не пометил этот вопрос как повторяющийся только потому, что вы не спросили, что именно сделал этот другой плакат. Я не знаю, что делать в таком случае, но все же хочу вам помочь. Удачи!

Вот код из этой ссылки для потомков:

MemoryStream stream = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(stream))
{
    writer.Write(myByte);
    writer.Write(myInt32);
    writer.Write("Hello");
}
byte[] bytes = stream.ToArray();
person William Morrison    schedule 04.08.2013
comment
привет @Morisson, предоставленная вами ссылка ведет на этот вопрос. Не могли бы вы это исправить? - person NoeL; 04.08.2013
comment
Не думаю, что это правильное решение. Код, который вы дали, предназначен только для ввода массива в поток памяти с помощью BinaryWriter, это не метод соединения потока с массивом. Даже последний код byte [] bytes = stream.ToArray (); приведет к ошибке, потому что поток недоступен, потому что поток был закрыт BinaryWriter. - person NoeL; 04.08.2013
comment
@NoeL - дайте ссылку (MSDN?), Чтобы доказать ваше последнее утверждение о ToArray сбое при закрытии / удалении MemeoryStream? - person Alexei Levenkov; 04.08.2013
comment
@AlexeiLevenkov, ToArray () не закрывает поток, BinaryWriter это сделал. Я не нашел ссылки на MSDN, но здесь есть вопрос stackoverflow.com/questions/1084813/ Я тестировал это, и BinaryWriter всегда закрывает ручей - person NoeL; 04.08.2013
comment
@NoeL Я не уверен, почему вам не нравится MSDN, но это может быть полезная ссылка MemoryStream.ToArray - Примечание. Этот метод работает, когда MemoryStream закрыт. - person Alexei Levenkov; 04.08.2013
comment
Не знаю, как я это напортачил, исправлено. - person William Morrison; 04.08.2013