zoukankan      html  css  js  c++  java
  • BinaryReader 自己写序列化


    听说过BinaryReader和BinaryWriter吗?

    序列化无非就是网络通信时所使用的传输数据的方式,而BinaryWriter可以将数据以二进制的方式写入到流当中。

    比如Int32型的1用BinaryWriter写入之后就是 01 00 00 00 四个字节,然而用普通的序列化则为 00 31 两个字节(因为C#默认采用Unicode编码,所有的字符都是两个字节)。虽然这里一看不如普通的序列化好,但是如果数值大一点的话——比如 65536 的话,普通序列化则为 00 36 00 35 00 35 00 33 00 36 共计10个字节,但是用BinaryWriter则是 00 00 01 00,还是四个字节。

    如果客户端这边使用了BinaryWriter,那么相对的在服务端那边就要使用BinaryReader来读取内容。切记,写入的顺序和读取的顺序要相同,并且读取时需要指定类型。

    比如BinaryWriter写入了Int32的65536,那么就需要用BinaryReader的ReadInt32()方法来读取。

    这种方法虽然写起来麻烦,但是实际上少了类型转换,是更加纯粹的内存操作,再加上数据体积较小,所以我认为这种方法应该比默认的序列化要快。

         static void Main(string[] args)
            {
                var fs = new MemoryStream();
                var bw = new BinaryWriter(fs);
                bw.Write("aaaaaaaaaaaa");
                bw.Write(55d);
    
                var br = new BinaryReader(fs);
                br.BaseStream.Position = 0;
                var companycode = br.ReadString();
                var ggg = br.ReadDouble();
    
                fs.Close();
                bw.Close();
                br.Close();
    
                Console.ReadKey();
            }
    
    
    
     
  • 相关阅读:
    Python数组操作将一维数组变成二维数组
    Python做一个计时器的动画
    tkinter添加背景音乐
    IDEA——配置代码检测
    Jenkins构建 前端node项目
    linux下python相关命令
    推荐几个IT交流社区
    jenkins常用插件
    linux上安装newman
    linux+jenkins+postman持续集成
  • 原文地址:https://www.cnblogs.com/yy1234/p/8193098.html
Copyright © 2011-2022 走看看