如何将一个结构体中的值 赋值给一个数组。

myshushu005 2006-09-10 10:09:36
我是刚刚学习c#的,想请教一下如何将一个结构体中的数据整体赋值给一个数组。我以前是搞delphi开发的 delphi中 move()函数可以。请问c#中如何实现。
结构体格式:[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct TrequestPack //交易请求包
{
public byte nTranCode; //事件代码
public byte nOperMode; //操作模式
public byte nAdditionalFlag; // 附加信息
public ushort nPackageLength; //交易包体长度
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string cOperCode;//操作员码
}
数组 char[] buffer = new char[2048];
...全文
2108 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jointan 2006-09-15
  • 打赏
  • 举报
回复
如果不想使用不安全代码,可以使用BitConverter转换你的结构中的每一个字段和他们的子字段,如果这个Byte[]只是为了在文件中存储或交换,只需要你写一个反转函数就可以了,如果需要扔给一个比如C函数之类的去当参数,那么需要指定它的StructLayout特性.
jointan 2006-09-15
  • 打赏
  • 举报
回复
楼上的方法,国内的大部分人都知道,一般人舍得不用或不敢用,因为用了可能会留下骂名........
Fyter 2006-09-15
  • 打赏
  • 举报
回复
国内就没有,在国外找到的

static unsafe byte[] YourStructToBytes( YourStruct s )
{
byte[] arr = new byte[ sizeof(YourStruct) ];
fixed( byte* parr = arr )
{ *((YourStruct*)parr) = s; }
return arr;
}

static unsafe YourStruct BytesToYourStruct( byte[] arr )
{
if( arr.Length < sizeof(YourStruct) )
throw new ArgumentException();

YourStruct s;
fixed( byte* parr = arr )
{ s = *((YourStruct*)parr); }
return s;
}
Fyter 2006-09-15
  • 打赏
  • 举报
回复
!!!!!
!!!!!
!!| !!
!!!!!
就没别的方法了?这也太费劲了

我也需要把结构换成Byte[]类型,然后用Stream进行读写
greatqn 2006-09-11
  • 打赏
  • 举报
回复
遍历一下,塞到一个数组里。
fd7893 2006-09-11
  • 打赏
  • 举报
回复
//具体实现
public char[] ToArray()
{
List<char> lPutChar = new List<char>();
lPutChar.Add((char)nTranCode);
lPutChar.Add((char)nOperMode);
lPutChar.Add((char)nAdditionalFlag);
foreach(char c1 in nPackageLength.ToString())
{
lPutChar.Add(c);
}
foreach(char c2 in cOperCode)
{
lPutChar.Add(c2);
}
return lPutChar.ToArray();
}
myshushu005 2006-09-11
  • 打赏
  • 举报
回复
To: fd7893(看着办吧) ( ) 信誉:98 Blog 2006-09-11 08:41:00 得分: 0
怎么实现? 能说得具体些吗,我刚学习c#.在此先感谢了.
fd7893 2006-09-11
  • 打赏
  • 举报
回复
方法很多啊!
比如给类加个方法 public char[] ToArray()
DreamOfEyes 2006-09-10
  • 打赏
  • 举报
回复
mark

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧