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 MemoryStream
lớ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.Write
phươ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.Write
tiêu tốn nhiều bộ nhớ hơn sau đónew MemoryStream(myByteArray)
MemoryStream
bộ đệ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 MemoryStream
lớp.