可以这样:
     int m_iLength;
     BYTE m_byteArray[100];
    (int *)m_byteArray=m_iLength;
这样以后,前4个字节就是数组的长度。

解决方案 »

  1.   


    type def union dw2byte
    {
    DWORD dw;
    byte[4];
    } DW2B;myFunc()
    {
    DW2B dw2b;
    dw2b=StringSize;
    string[0]=dw2b.byte[0];
    string[1]=dw2b.byte[1];
    string[2]=dw2b.byte[2];
    string[3]=dw2b.byte[3];}
      

  2.   


    还是 zhang_qxian(blueman2001)的法子好
      

  3.   

    谢谢两位的热心,如果是在数组的中间怎么办?比方说在m_byteArray[10]开始存长整形的数据。
      

  4.   

    可以这样:
        int m_iLength;
        BYTE m_byteArray[100];
        (int *)m_byteArray=m_iLength;  // 存储
        m_iLength=(int *)m_byteArray;  // 取出// 如果在m_byteArray[10]
       (int *)(m_byteArray+10)=m_iLength;  // 存储
        m_iLength=(int *)(m_byteArray+10);  // 取出
      

  5.   

    我说kekepengpeng ,你就不能够举一反三吗?照着seeundersnow的法子做吧!
      

  6.   

    关键是我这里编译通过不了,主要是前面的那句,我的编译提示我(long*)是一个单操作数的运算符。不过我的数组是用new动态分配的,unsigned char* pMyArray;
    pMyArray = new unsigned char[CodeSize];
    (long*)pMyArray = CodeSize;
    便出现错误!
      

  7.   

    pMyArray = new unsigned char[CodeSize];
    *(long*)(pMyArray+偏移) = CodeSize;
    前面加个 *
    前面几位有点笔误
    取出
    long CodeSize = *(long*)(pMyArray+偏移);
      

  8.   


    // sorry,改成这个吧
    *((long*)pMyArray) = CodeSize;