因为需要自定义了一个struct public struct zisepaPaceFrame
{
public char[] addr;
public UInt16 cmd;
public UInt32 frameId;
public UInt16 trigger;
public UInt16 crc16;
}另外 addr已经赋值:addr = new char[6] { 'F', 'F', 'F', 'F', 'F', 'F' }
请问如何把这个struct转换至byte[]?
已经尝试过Marshal.StructureToPtr的方法,有错误,无法编译
{
public char[] addr;
public UInt16 cmd;
public UInt32 frameId;
public UInt16 trigger;
public UInt16 crc16;
}另外 addr已经赋值:addr = new char[6] { 'F', 'F', 'F', 'F', 'F', 'F' }
请问如何把这个struct转换至byte[]?
已经尝试过Marshal.StructureToPtr的方法,有错误,无法编译
解决方案 »
- vs2008打了SP1补丁后智能提示变英文的问题!!
- 这段代码中,OleDbConnection 为何要定义两次?
- winform中捕获异常,并把该异常的原因,方法名称(发生异常的方法全名称),参数值存入xml中
- MSSQL导出TXT问题
- 刚转C# 问2个简单问题(asp.net)
- 根据datagridview的某列的cell值,给另外一列的cell赋值(各位兄弟姐妹乱入)
- myclient = new TcpClient("127.0.0.1", Int32.Parse(labelPort.Text));这句有错吗?
- 终于生成小星星了~散
- vs2003 可以用 clickonce吗
- erp和mrpII之间的区别 欢迎长篇大论 立即给分
- 求助如何正则匹配以下的HTML的数据按表格里的分值从大到小排序
- 怎样从数组中移除一项??
这个byte[]值也可以转换为struct?
你可以使用二进制序列化功能,百度一下。
public char[] addr; //这个必须定长
在。Net中char是16位的
//obj为结构对象
public static byte[] rawSerialize(object obj) { int rawsize = Marshal.SizeOf(obj); IntPtr buffer = Marshal.AllocHGlobal(rawsize); Marshal.StructureToPtr(obj, buffer, false); byte[] rawdatas = new byte[rawsize]; Marshal.Copy(buffer, rawdatas, 0, rawsize); Marshal.FreeHGlobal(buffer); return rawdatas; }
bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
zisepaPaceFrame ast = new zisepaPaceFrame();
ast.cmd = 0x1234;
ast.addr = new char[] { '1', '2', '3', '4', '5' };
bf.Serialize(stream, ast);
byte[] buff = stream.ToArray();