C#里面有没有类似memset功能的函数

songbird 2004-04-08 10:43:24
在编写网络通信协议的时候经常要用到把结构数据复制到字节数组中,怎么做比较好啊?各位给点例子吧!
...全文
275 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqchen79 2004-04-14
  • 打赏
  • 举报
回复
[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct Answer
{
public Int16 name;
public Int16 type;
public Int16 class1;
public UInt32 ttl;
public UInt16 length;
}
gjgj3368 2004-04-13
  • 打赏
  • 举报
回复
楼主可以看看关于内存字节对齐的概念
turnmissile 2004-04-13
  • 打赏
  • 举报
回复
用显示分配
[StructLayout(LayoutKind.Explicit)]
public struct Answer
{
[FieldOffset(0)]public Int16 name;
[FieldOffset(2)]public Int16 type;
[FieldOffset(4)]public Int16 class1;
[FieldOffset(6)]public UInt32 ttl;
[FieldOffset(10)]public UInt16 length;
}
songbird 2004-04-13
  • 打赏
  • 举报
回复
字节对齐?哪里有资料?
songbird 2004-04-09
  • 打赏
  • 举报
回复
听起来有道理,可是我的结构反映的是协议头信息,不能随便改阿.
有什么别的办法吗?
maotroy 2004-04-09
  • 打赏
  • 举报
回复
结构中的成员长度分别为2,2,2,4,2,存放UInt32类型时只能重新开辟新单元区,最后的UIint16虽然占用了2个字节,但多余的2个字节无法再分配了。
楼主如果把Answer.tt1放在最后定义,再看下长度就发现变成12了。
真相重于对错 2004-04-08
  • 打赏
  • 举报
回复
byte[]
songbird 2004-04-08
  • 打赏
  • 举报
回复
前面还有一个结构中有6个Int16变量,SizeOf返回值为12。高手出来讲讲啊!
songbird 2004-04-08
  • 打赏
  • 举报
回复
怪异阿!
如下代码返回16 ?!!!!

Answer a = new Answer();
int as1 = Marshal.SizeOf(a);

public struct Answer
{
public Int16 name;
public Int16 type;
public Int16 class1;
public UInt32 ttl;
public UInt16 length;
}

应该是12才对啊!为什么啊?!
turnmissile 2004-04-08
  • 打赏
  • 举报
回复
BitConvet.GetBytes();

110,568

社区成员

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

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

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