<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="C#(C++,dll)结构体数组间的转化之定义结构体和byte数组转结构体" id="card1">
<p> 游客</p><p>
标题:C#(C++,dll)结构体数组间的转化之定义结构体和byte数组转结构体<br/>
正文:<br/>
解决C#结构体数组间的转化问题的由来：在写C#TCP通信程序时，发送数据时，如果是和VC6.0等写的程序通信的话，很多的都是传送结构体，在VC6.0中可以很方便的把一个char[]数组转换为一个结构体，而在C#却不能直接把byte数组转换为结构体，要在C#中发送结构体，可以按以下方法实现：（1）解决C#结构体数组间的转化之定义结构体：//命名空间  using System.Runtime.InteropServices;   //注意这个属性不能少  [StructLayoutAttribute(  LayoutKind.Sequential,  CharSet=CharSet.Ansi,Pack=1)]  struct TestStruct  ...{  public int c;  //字符串，SizeConst为字符串的最大长度  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]  public string str;  //int数组，SizeConst表示数组的个数，在转换成  //byte数组前必须先初始化数组，再使用，初始化  //的数组长度必须和SizeConst一致，例test = new int[6];  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]  public int[] test;  }  2）解决C#结构体数组间的转化之byte数组转结构体:/**//// &amp;lt;summary&amp;gt;  /// byte数组转结构体  /// &amp;lt;/summary&amp;gt;  /// &amp;lt;param name=&amp;quot;by<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=299&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=299&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=299&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=299&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=299">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=299">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>