ฉันจะแปลง struct System.Byte
byte[]
เป็นSystem.IO.Stream
วัตถุในC # ได้อย่างไร
ฉันจะแปลง struct System.Byte
byte[]
เป็นSystem.IO.Stream
วัตถุในC # ได้อย่างไร
คำตอบ:
วิธีที่ง่ายที่สุดในการแปลงอาร์เรย์ไบต์เป็นสตรีมใช้MemoryStream
คลาส:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
หากคุณต้องการอาร์เรย์ไบต์กลับมา
คุณกำลังมองหาวิธีการMemoryStream.Write
ตัวอย่างเช่นรหัสต่อไปนี้จะเขียนเนื้อหาของbyte[]
อาร์เรย์ลงในสตรีมหน่วยความจำ:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
อีกวิธีหนึ่งคุณสามารถสร้างวัตถุใหม่ที่ไม่สามารถปรับขนาดได้MemoryStream
ตามอาร์เรย์ไบต์:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Write
คือการใช้หน่วยความจำมากขึ้นแล้วnew MemoryStream(myByteArray)
MemoryStream
บัฟเฟอร์ตามค่าเริ่มต้น (เช่นเดียวกับเช่นรายการ) สิ่งนี้สามารถจัดการได้อย่างง่ายดายโดยใช้การโอเวอร์โหลดที่ช่วยให้คุณสามารถกำหนดความจุได้ แต่จะมีประโยชน์จริง ๆ ถ้าคุณไม่คาดว่าจะเขียนข้อมูลใด ๆ ไปยังสตรีม (หรือถ้าคุณรู้ว่าคุณต้องการไบต์พิเศษจำนวนเท่าใด ) แต่ฉันสงสัยว่า jitbit อาจหมายถึงความจริงที่ว่าเมื่อคุณใช้ตัวbyte[]
สร้างอาร์เรย์จะไม่ถูกคัดลอก - MemoryStream
หมายถึงอาร์เรย์ในอาร์กิวเมนต์ นี้สามารถเป็นได้ทั้งดีและไม่ดีและมันเป็นบิตของความอัปยศมันไม่ได้รับการบันทึกไว้ใน MSDN :)
วิธีการทั่วไปในการเขียนไปยังสตรีมใด ๆ (ไม่เพียง แต่MemoryStream
) คือการใช้BinaryWriter
:
static void Write(Stream s, Byte[] bytes)
{
using (var writer = new BinaryWriter(s))
{
writer.Write(bytes);
}
}
มองเข้าไปในMemoryStream
ชั้นเรียน