zoukankan      html  css  js  c++  java
  • C# 通过MemoryStream,BinaryWriter,BinaryReader读写字节数据

    不用自己再去写各种数据类型转字节数组的方法了,用起来很方便,不过如果要和第三方程序通讯的话,需要搞清楚BinaryWriter和BinaryReader是怎么实现的,让下位机按照BinaryWriter和BinaryReader的方式传输数据,而且ms.GetBuffer()得到的数据貌似是直接返回的内部字节数组,数组的长度可能会严重大于实际数据的长度

    using System;
    using System.IO;
    
    namespace ConsoleApp {
        class Program {
            static void Main(string[] args) {
                Model model = new Model {
                    CmdID = 0x01,
                    UserID = 9999,
                    Name = "张三丰"
                };
                byte[] byteArray = Write(model);
                Model readData = Read(byteArray);
                Console.ReadKey();
            }
            class Model {
                public byte CmdID { get; set; }
                public int UserID { get; set; }
                public string Name { get; set; }
            }
            /// <summary>
            /// 将数据写入到字节数组中
            /// </summary>
            static byte[] Write(Model data) {
                MemoryStream ms = new MemoryStream();
                BinaryWriter bw = new BinaryWriter(ms);
                bw.Write(data.CmdID);  //写数据
                bw.Write(data.UserID);
                bw.Write(data.Name);
                return ms.GetBuffer();
            }
            /// <summary>
            /// 从字节数组中读取数
            /// </summary> 
            static Model Read(byte[] byteArray) {
                MemoryStream ms = new MemoryStream(byteArray);
                BinaryReader br = new BinaryReader(ms);
                return new Model {
                    CmdID = br.ReadByte(),  //读数据
                    UserID = br.ReadInt32(),
                    Name = br.ReadString()
                };
            }
        }
    }
  • 相关阅读:
    [BZOJ 4318] OSU!
    [BZOJ 4720][NOIP 2016] 换教室
    [Tyvj 1729] 文艺平衡树
    [BZOJ 1500]维修数列 [Splay Tree从进阶到住院]
    [学习笔记] CDQ分治 从感性理解到彻底晕菜
    [COGS 1752] 摩基亚Mokia
    [Tyvj 1730] 二逼平衡树
    [学习笔记] Splay Tree 从入门到放弃
    [Tyvj 1728] 普通平衡树
    [BZOJ 3594] 方伯伯的玉米田
  • 原文地址:https://www.cnblogs.com/luludongxu/p/14638400.html
Copyright © 2011-2022 走看看