2

我想将数据编码为缓冲区中的二进制格式,稍后我将写入文件或通过套接字传输。最好使用什么 C# 类来创建List<byte>包含二进制数据的类。

我将在此缓冲区中以自定义编码格式(对于字符串)和整数和浮点类型的常规二进制数字布局存储整数、单字节字符串(即 ASCII)、浮点数和其他数据。

BinaryWriter看起来它有我需要的方法,但它必须为我管理一个不断增长的缓冲区,我想List<byte>在我完成编码后产生结果。

谢谢

4

2 回答 2

7

BinaryWriter,写入MemoryStream。如果您需要超过可用内存,您可以轻松切换到临时文件流。

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();
}
于 2012-05-08T14:21:40.783 回答
2

BinaryWriter 写入流。给它一个 MemoryStream,当你想要你的时List<byte>,使用new List<byte>(stream.GetBuffer()).

于 2012-05-08T14:24:00.210 回答