第一次用C#,什么都不会,呵呵//定义一个缓冲区
Byte [] MyBuffer = Byte[1024];现在的问题是我如何把整数、浮点数、字符串等数据拷进去。
然后再把数据拷出来,以前在C++都是用memcpy或者CopyMemory下来拷的不知道如何操作?

解决方案 »

  1.   

    Byte [] MyBuffer = new Byte[1024];
    string str = "abc";
    for(int i = 0;i<3;i++)
    {
    MyBuffer[i] = (byte)str[i];
    } for(int i=0;i<3;i++)
    {
    Response.Write(MyBuffer[i]);
    }
      

  2.   

    不能这样做,byte类型不能像C++那样操作。
    如果确实需要,可以考虑用unsafe代码。
      

  3.   

    //using System.IO;
    int i = 10;
    MemoryStream meStm = new MemoryStream();
    System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
    //序列化
    formatter.Serialize(meStm,i);
    byte[] buffer = meStm.ToArray();
    //反序列化
    int j = (int)formatter.Deserialize(new MemoryStream(buffer));MessageBox.Show(j.ToString());
      

  4.   

    拷进去:
    byte[] b = System.Text.Encoding.ASCII.GetBytes(str.ToCharArray());
    读出来:
    string str = System.Text.Encoding.ASCII.GetString(b);
      

  5.   

    int i = 10;
    MemoryStream meStm = new MemoryStream();
    System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
    //序列化
    formatter.Serialize(meStm,i);
    byte[] buffer = meStm.ToArray();
    //反序列化
    int j = (int)formatter.Deserialize(new MemoryStream(buffer));
      

  6.   

    还有个问题,我的缓冲区是有数据格式的
    比如
    先是一段字符串,再是几个整数,然后又是几个浮点数,接着又有一段字符串。
    如何来操作这段数据,真是烦阿,C#好像对这种问题的处理不是很方便阿,
    还是我的思维还C/C++那里。
      

  7.   

    有这么复杂吗?请看BitConverter.GetBytes(....), 把得到的数组复制过去就可以了
      

  8.   

    反过来取int,string也是一样,看  BitConverter.Toxxxx 这些方法完全和 c 的思想一样
      

  9.   

    好像还是不行。我在说的详细点把
    在C++中
    typedef struct
    {
       int iFlag;
       char buf[50];
    }TMyRecord;//自定义结构体char* buf = new char[1024];//缓冲块
    char sHead[5] = "HEAD";//第一个数据
    int   iLen;            //第二个数据
    TMyRecord myData;      //第三个数据//写入缓冲
    memcpy(buf, sHead, strlen(sHead));
    memcpy(buf+4, &iLen, sizeof(int) );
    memcpy(buf+4+sizeof(int), &myData, sizeof(TMyRecord));char sReadHead[5];
    int   iReadLen;
    TMyRecord myReadData;从缓冲中读入
    memcpy(sHead, buf, strlen(sHead));
    memcpy(&iLen,buf+4,  sizeof(int) );
    memcpy(&myData, buf+4+sizeof(int), sizeof(TMyRecord));
    //-------------------------------------------------------
    这段程序用C#怎么写?
      

  10.   

    byte [] buf = new byte [1024];
    int pos = 0;
    byte [] temp = BitConvert.GetBytes(myData.iFlag));
    Array.Copy(temp, 0, buf, pos, temp.Length);
    pos += temp.Length;
    Array.Copy(myData.buf, 0, buf, pos, myData.buf.Length);
      

  11.   

    使用HashTable保存数据,可以参考MS Enterprise Libralry(??)的缓存源代码
    没有仔细研究过,不过应该是不错的解决方案
      

  12.   

    呵呵
    tiaoci(我挑刺,我快乐)
    的方法可以!