Jak przekonwertować struct System.Byte
byte[]
na System.IO.Stream
obiekt w C # ?
Jak przekonwertować struct System.Byte
byte[]
na System.IO.Stream
obiekt w C # ?
Odpowiedzi:
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:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Alternatywnie możesz utworzyć nowy obiekt , którego rozmiar nie może się zmieniać, MemoryStream
na podstawie tablicy bajtów:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
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żywasz byte[]
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 :)
Zajrzyj do MemoryStream
klasy.