我想將數據編碼成緩衝區中的二進制格式,稍後我將寫入文件或通過套接字進行傳輸。 C#類或類最適合用來創建包含二進制數據的List<byte>
。我應該使用哪個類將二進制數據寫入緩衝區(比如字節列表)
我將以自定義編碼格式(對於字符串)和整數和浮點數的常規二進制數字佈局存儲整數,單字節字符串(即ASCII),浮點數和其他數據類型。
BinaryWriter
看起來像它有我需要的方法,但它必須爲我管理一個不斷增長的緩衝區,我想從編碼完成時產生一個List<byte>
結果。
感謝
我想將數據編碼成緩衝區中的二進制格式,稍後我將寫入文件或通過套接字進行傳輸。 C#類或類最適合用來創建包含二進制數據的List<byte>
。我應該使用哪個類將二進制數據寫入緩衝區(比如字節列表)
我將以自定義編碼格式(對於字符串)和整數和浮點數的常規二進制數字佈局存儲整數,單字節字符串(即ASCII),浮點數和其他數據類型。
BinaryWriter
看起來像它有我需要的方法,但它必須爲我管理一個不斷增長的緩衝區,我想從編碼完成時產生一個List<byte>
結果。
感謝
BinaryWriter,寫入MemoryStream。如果您需要的內存超過可用內存,則可以輕鬆切換到temporary file流。
using (var myStream = new MemoryStream()) {
using (var myWriter = new BinaryWriter(myStream)) {
// write here
}
using (var myReader = new BinaryReader(myStream)) {
// read here
}
// put the bytes into an array...
var myBuffer = myStream.ToArray();
// if you *really* want a List<Byte> (you probably don't- see my comment)
var myBytesList = myStream.ToArray().ToList();
}
BinaryWriter寫入流。給它一個MemoryStream,當你想要你的List<byte>
時,使用new List<byte>(stream.GetBuffer())
。
+1用於顯示整個過程到列表
您錯過了列表的轉換,這是我要求的最終結果,但我仍然給你了複選標記。 –
這是故意的。你*可能*不想要一個'List',因爲這意味着你正在改變緩衝區的內容。這幾乎從未完成,實際上所有采用緩衝區的BCL API都使用「byte []」而不是「List 」。也就是說,我已經爲完整性編輯了答案。 –
夠公平!我已經在上述評論的解釋中接受了+1。 –