Làm cách nào để chuyển đổi struct System.Byte byte[]thành một System.IO.Streamđối tượng trong C # ?
Làm cách nào để chuyển đổi struct System.Byte byte[]thành một System.IO.Streamđối tượng trong C # ?
Câu trả lời:
Cách dễ nhất để chuyển đổi một mảng byte thành luồng là sử dụng MemoryStreamlớp:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()nếu bạn muốn mảng byte của bạn trở lại.
Bạn đang tìm kiếm MemoryStream.Writephương pháp .
Ví dụ, đoạn mã sau sẽ ghi nội dung của một byte[]mảng vào luồng bộ nhớ:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Ngoài ra, bạn có thể tạo mộtMemoryStream đối tượng mới , không thể thay đổi kích thước dựa trên mảng byte:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Writetiêu tốn nhiều bộ nhớ hơn sau đónew MemoryStream(myByteArray)
MemoryStreambộ đệm theo mặc định (giống như với một danh sách). Điều này có thể được giải quyết dễ dàng bằng cách sử dụng quá tải cho phép bạn đặt dung lượng, nhưng chỉ thực sự hữu ích nếu bạn không muốn ghi bất kỳ dữ liệu nào vào luồng (hoặc nếu bạn biết bạn cần thêm bao nhiêu byte ). Nhưng tôi nghi ngờ rằng jitbit có thể đề cập đến thực tế là khi bạn sử dụng hàm byte[]tạo, mảng không được sao chép - tham chiếu MemoryStreamđến mảng trong đối số. Điều này có thể vừa tốt vừa xấu, và hơi xấu hổ vì nó không được ghi nhận trên MSDN :)
Nhìn vào MemoryStreamlớp.