C#里如何给结构体成员赋值

ryfsoft 2010-09-13 11:10:21
这是我的机构体
/// <summary>
/// Deliver 包结构
/// </summary>
[StructLayout(LayoutKind.Sequential)]
private struct Deliver
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pUserNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pSpNumber;
public byte tppid;
public byte tpudhi;
public byte msgcoding;
public int msglen;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pContent;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pReserve;
}


public int Create_RecvMessage()
{
Deliver deliver = new Deliver(); //调用Deliver,给它赋值
deliver.pUserNumber = ????
}

Deliver 结构里面的pUserNumber ,pSpNumber等都是 byte[]类型的,如何给他赋值
...全文
2743 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
llf94632525 2010-09-13
  • 打赏
  • 举报
回复
你是不是想问怎么构造一个byte数组啊?
可以用String转换得到。
cactus123456 2010-09-13
  • 打赏
  • 举报
回复
Deliver deliver = new Deliver(); //调用Deliver,给它赋值
1,结构不用new,就像int i = new int(),一般不用new int();
2,你可以自定义初始化结构
private struct Deliver
{
public byte[] pUserNumber;
public byte[] pSpNumber;
public byte tppid;
public byte tpudhi;
public byte msgcoding;
public int msglen;
public byte[] pContent;
public byte[] pReserve;

public Deliver(int i)
{
pUserNumber = new byte[100];
pSpNumber = new byte[100];
pContent = new byte[100];
pReserve = new byte[100];
tppid = 0;
tpudhi = 0;
msgcoding = 0;
msglen = 0;
}
}

然后
Deliver deliver = new Deliver(100);
macdonald25 2010-09-13
  • 打赏
  • 举报
回复
[StructLayout(LayoutKind.Sequential)]
private struct Deliver
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pUserNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pSpNumber;
public byte tppid;
public byte tpudhi;
public byte msgcoding;
public int msglen;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pContent;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
public byte[] pReserve;
}


public int Create_RecvMessage()
{
Deliver deliver = new Deliver(); //调用Deliver,给它赋值
deliver.pUserNumber = new byte[22];
deliver.pSpNumber = new byte[22];
.
.
.
}
bom.b 2010-09-13
  • 打赏
  • 举报
回复
试试:
/// <summary>
/// 将object格式化成字节数组byte[]
/// </summary>
/// <param name="dsOriginal">object对象</param>
/// <returns>字节数组</returns>
public static byte[] GetBinaryFormatData(object dsOriginal)
{
byte[] binaryDataResult = null;
MemoryStream memStream = new MemoryStream();
IFormatter brFormatter = new BinaryFormatter();
brFormatter.Serialize(memStream, dsOriginal);
binaryDataResult = memStream.ToArray();
memStream.Close();
memStream.Dispose();
return binaryDataResult;
}
面都是我新手时期学C的时候整理的一些TXT文档,因为分不够了,所以放上来赚点积分,都是很基础的东西,面的代码都是经过我测试的,保证可用。 (1)输出Hello,world (2)标识符 (3)常量与变量 (4)整型数据 (5)实型数据 (6)复合赋值表达式 (7)自加自减运算符和逗号表达式 (8)顺序结构及数据输出 (9)数据输入 (10)作业练习一 (11)关系运算符和逻辑运算符 (12)选择结构及条件表达式 (13)循环结构,while语句 (14)循环结构,do while语句 (15)循环结构,for语句 (16)字符型数据 (17)字符型数据实例,作业练习二 (18)函数定义 (19)函数应用实例,作业练习三 (20)指针的定义 (21)函数之间地址值的传递 (22)函数返回地址值 (23)一维数组的定义 (24)一维数组应用实例 (25)一维数组应用实例(2) (26)一维数组应用实例(3) (27)二维数组的定义 (28)二维数组的初始化 (29)二维数组与指针 (30)二维数组应用实例 (31)二维数组应用实例(2) (32)用一维数组来存储字符串 (33)字符串的输入与输出 (34)字符串数组 (35)用于字符串处理的函数 (36)字符串应用实例 (37)传给Main函数的参数 (38)函数指针 (39)函数的递归调用 (40)变量作用域和存储类别 (41)编译预处理和不带参数的宏替换 (42)带参数的宏替换和文件包含 (43)动态存储分配 (44)结构体变量的定义与引用 (45)利用结构体变量构成静态链表 (46)利用结构体变量构成动态链表 (47)共用体的定义与应用 (48)位运算符 (49)File文件的数据输出操作 (50)File文件的数据输入操作 (51)判断文件结束函数 (52)fscanf和fprintf函数 (53)fgets和fputs函数 (54)fread和fwrite函数 (55)文件定位函数 c switch的用法 c 避免调试窗口闪退 c 弹出消息窗口 c 等待函数(sleep) c 定义类成员 c 动态分配内存法定义数组 c 返回二维数组 c 方向键键码 c 改变字体颜色 c 绘制图形 c 获得鼠标当前位置坐标 c 检测键盘按键 c 检测鼠标按下事件 c 将整数转换成二进制数并存放到数组中 c 结构体问题 c 使用winsock实现server和client(通讯程序) c 随机数发生器 c 图形模式详解 c 网页爬虫 c 写图形界面 c 遗传算法实例 c 在图形界面输出文字 c# List的用法 VS2010如何解决每次编译都要重新生成

110,530

社区成员

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

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

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