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();
        }
 
 

 

 

转载于:https://www.cnblogs.com/yy1234/p/8193098.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值