这是我的机构体
/// <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[]类型的,如何给他赋值
/// <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[]类型的,如何给他赋值
可以用String转换得到。
/// <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;
}
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];
.
.
.
}
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);