Jak przekonwertować struct System.Byte
byte[]
na System.IO.Stream
obiekt w C # ?
759
Najłatwiejszym sposobem przekonwertowania tablicy bajtów na strumień jest użycie MemoryStream
klasy:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
jeśli chcesz odzyskać tablicę bajtów.Szukasz
MemoryStream.Write
metody .Na przykład poniższy kod zapisze zawartość
byte[]
tablicy w strumieniu pamięci:Alternatywnie możesz utworzyć nowy obiekt , którego rozmiar nie może się zmieniać,
MemoryStream
na podstawie tablicy bajtów:źródło
MemoryStream.Write
zajmuje dużo więcej pamięcinew MemoryStream(myByteArray)
MemoryStream
Domyślnie w buforze jest przydzielone dodatkowe miejsce (tak jak np. Z listą). Można to łatwo rozwiązać za pomocą przeciążenia, które pozwala ustawić pojemność, ale jest to naprawdę przydatne, jeśli nie spodziewasz się zapisania żadnych danych w strumieniu (lub jeśli wiesz, ile dodatkowych bajtów prawdopodobnie będziesz potrzebować ). Podejrzewam jednak, że jitbit może odnosić się do faktu, że gdy używaszbyte[]
konstruktora, tablica nie jest kopiowana -MemoryStream
odnosi się do tablicy w argumencie. Może to być zarówno dobre, jak i złe, a szkoda, że nie jest to udokumentowane w MSDN :)Ogólne podejście do pisania do dowolnego strumienia (nie tylko
MemoryStream
) polega na użyciuBinaryWriter
:źródło
Zajrzyj do
MemoryStream
klasy.źródło