各位大虾:
    最近我遇到数组和二进制数组相互转换问题的问题,在网上找了很久都没有找到一个解决办法,请各位帮帮看看.谢谢,先!
    问题如下:
    有一个数组(类型可以是int,float,double),怎样将它转换成byte[]类型,同时、又如何将byte[]类型转换成对应的(int,float,double)数组.
    请各位帮帮忙!

解决方案 »

  1.   

    //用Buffer.BlockCopy方法搞定byte[] B = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 
        0x07, 0x08, 0x09, 0x0A, 0x0B };
    int[] A = new int[3];
    Buffer.BlockCopy(B, 0, A, 0, B.Length);
    Console.WriteLine("a[0]={0:X},a[1]={1:X},a[2]={2:X}", A[0], A[1], A[2]);
    //a[0]=3020100,a[1]=7060504,a[2]=B0A0908
    A[0] = 0x01234501;
    A[1] = 0x01234502;
    A[2] = 0x01234503;
    Buffer.BlockCopy(A, 0, B, 0, B.Length);
    Console.WriteLine(BitConverter.ToString(B));
    //01-45-23-01-02-45-23-01-03-45-23-01
      

  2.   

    不行,我用的.NET Framework1.1 ,Buffer.BlockCopy是高版本的!!!
      

  3.   

    byte 实际上就是unsigned char
      

  4.   

    这两分还不好混-_-!!!
    再给一个方案:byte[] B = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 
        0x07, 0x08, 0x09, 0x0A, 0x0B };
    int[] A = new int[3];
    MemoryStream vMemoryStream = new MemoryStream();
    Marshal.Copy(B, 0, Marshal.UnsafeAddrOfPinnedArrayElement(A, 0), B.Length);
    Console.WriteLine("a[0]={0:X},a[1]={1:X},a[2]={2:X}", A[0], A[1], A[2]);A[0] = 0x01234501;
    A[1] = 0x01234502;
    A[2] = 0x01234503; 
    Marshal.Copy(A, 0, Marshal.UnsafeAddrOfPinnedArrayElement(B, 0), A.Length);
    Console.WriteLine(BitConverter.ToString(B));
      

  5.   

    问题解决,谢谢zswang(伴水清清)