//有多个变量如下:
int ma=0;
long mb=0;
long mc=254;现在我想把这3个变量都放到一个byte[]数组中,模拟实现一个结构体,以便能方便的存储为二进制文件,请问我如何向这个byte[]写入3个变量,又如何读取呢??

解决方案 »

  1.   

    什么意思?是这样吗?
    int ma = 0;
    long mb = 0;
    long mc = 254;
    byte[] buf = new byte[3];
    buf[0] = (byte)ma;
    buf[1] = (byte)mb;
    buf[2] = (byte)mc;
      

  2.   

    直接转用Convert类
    转编码用Encode类 
    总有适合的
      

  3.   

    那类技术叫做“序列化、反序列化”,例如 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类所描述的。你描述的太原始了。
      

  4.   

    BinaryFormatter 将一个对象序列化到一个Stream 中。如果你要得到byte[],可以使用 MemoryStream 来保存序列化结果,然后直接使用 ToArray() 方法得到 byte[]。
      

  5.   

    随便搜到一篇文章,可以看看:http://developer.51cto.com/art/200909/150768.htm
      

  6.   

    用Convert类可以实现。在网络传输时常常需要用到的。
      

  7.   


    //回1楼 Snowdust
    //如果是以下数字,那么该方法肯不行了
    int ma = 123456789;
    long mb = 1234567891213456L;
    long mc = 1234567891213456L;//将上面3个数字放在一个byte[],实现读取和存储,值不能丢失。
    //我希望确定这个byte[]的长度,使用Convert类一个变量得到一个byte[],难道必须把3个byte[]复制一起吗??
    回6楼 sp1234
    我不希望序列化一个对象,因为我要转化的变量只是这个对象中的指定成员,而不是全部。请问该怎么解决呢??
      

  8.   

    按照既定的内存布局定义结构,把结构直接转换为byte[]给对方