从GOOGLE里找到 
 http://community.csdn.net/Expert/topic/3466/3466293.xml?temp=.6052515   
    
  可以“比较”完美得实现   struct   <->   byte[]   的互相转换。 
可是已经是错误页面了。
如果哪位高人解决。。麻烦再贴一次好不?

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView2.asp?id=3466293
      

  2.   

    关键字:unsafe代码、fixed数组、指针,有了这些,就可以像C/C++那样发送和接收结构的内容了。
      

  3.   

    你主要是什么程序间的数据传递,如果是.net的话,可以使用序列化进行传递。例如:
    [Serializable]
    struct yourStruct
    {
       ...
    }//Struct to byte[]
    yourStruct myData = new yourStruct();
    BinaryFormatter Bf = new BinaryFormatter();
    MemoryStream Ms = new MemoryStream();
    Bf.Serialize(Ms,myData); 
    byte[] bData = ms.GetBuffer();
      

  4.   

    是.net 和C++
    .net 这边用C#
      

  5.   

    runrunrun(做最好的自己)
    的好像不行呀
      

  6.   

    http://blog.joycode.com/sunmast/archive/2005/12/13/dotnet20_pinvoke_enhance.aspx
      

  7.   

    我的结构体定义如下
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
    public struct testStruct
    {
        public int i;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public char[] Key;
    }  在执行Marshal.SizeOf(structObj);时抛出
    {"类型“testStruct”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。"}
    在执行Marshal.StructureToPtr(structObj, buffer, true);抛出
    {"无法封送处理类型为“testStruct”的字段“Key”: 无效的托管/非托管类型组合(数组字段必须与 ByValArray 或 SafeArray 成对出现)。":""}
      

  8.   

    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public char[] Key;- or -
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string Key;
      

  9.   

    Sunmast(速马|回到未来)
    可以转了
    可是服务器接受提示长度超出了。
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
    public struct testStruct
    {
        public int i;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public char[] Key;

    这个总长度应当是132.转出来之后也是132.可是服务器接受的时候。提示超长了。不知道是我的错还是服务器哪边的问题
      

  10.   

    string key = "sdfasd32473fe12wq423sdfaga56663468hmk@123%dsfadsf&";
            byte[] buf;
            testStruct stuTest = new testStruct();
            stuTest.Key = new char[128];
            char[] tmpKey=key.ToCharArray();
            for (int i = 0; i < tmpKey.Length; i++)
            {
               stuTest.Key[i]=tmpKey[i];
            }
            stuTest.i = 2;
            buf = BinarySerializer.Struct2Bytes<testStruct>(stuTest);
      

  11.   

    直接用string 何必用char[]呢??ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconstructssample.htm