如何将C++中数据类型转换为C#语言写的

zyx_hawk 2008-06-26 10:10:08
typedef struct // 本结构中功能号(function)与操作方式(czfs)是必须的,其它可选
{
unsigned short length; //长度 (整个数据包长度)
unsigned short crc ; //CRC校验码,从serio 开始计算,暂时保留
unsigned short serio; //序列号(按请求划分,从1开始)
unsigned char function; //功能号
unsigned char czfs; //操作方式(与柜台中的设置相同)
unsigned long status; //状态 0正确 其他错误(应答有效)
}tagBLOCK_HEAD;
typedef struct
{
tagBLOCK_HEAD HEAD; //头信息
char KHBSLX; // '0'-'9'交易所代码(参看柜台设置)
// 'Z' 资金帐号
// 'C' 磁卡号
char KHBS[31]; //KHBS 股东代码或资金帐号或磁卡号
char JYMM[11]; //JYMM 交易密码
}tagMMJY_Request;

typedef union
{
tagBLOCK_HEAD head;
tagMMJY_Request mmjy;

}tagREQUEST;

int WINAPI KDAPI_Request_MT(tagREQUEST &request, int nConnectionNo, unsigned int *sClientSocket=NULL);

以上是金证3.2接口部分数据结构,请问哪位高手能用C#语言给出其对应数据类型
...全文
188 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyx_hawk 2008-06-26
  • 打赏
  • 举报
回复
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct tagBLOCK_HEAD
{
public ushort length; //长度(整个数据包长度)
public ushort crc ;
public ushort serio;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public string function; //功能号
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public byte czfs; //操作方式(与柜台中的设置相同)
public uint status; //状态 0正确 其他错误(应答有效) ,默认值:0
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct tagGDDL_Request
{
public tagBLOCK_HEAD Head; //头信息

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1)]
public string khbslx; //客户标识类型
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
public string khbs; //客户标识
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
public string jymm; //交易密码
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1)]
public string gdms; //股东模式
}
这是这样定义的,好像差不多,多谢!
zyx_hawk 2008-06-26
  • 打赏
  • 举报
回复
let me try
halk 2008-06-26
  • 打赏
  • 举报
回复
楼上正确。
gomoku 2008-06-26
  • 打赏
  • 举报
回复
tagREQUEST and tagMMJY_Request are the same thing.


[StructLayout(LayoutKind.Sequential)]
struct BLOCK_HEAD
{
ushort length; //长度 (整个数据包长度)
ushort crc ; //CRC校验码,从serio 开始计算,暂时保留
ushort serio; //序列号(按请求划分,从1开始)
byte function; //功能号
byte czfs; //操作方式(与柜台中的设置相同)
uint status; //状态 0正确 其他错误(应答有效)
}

[StructLayout(LayoutKind.Sequential)]
struct MMJY_Request
{
BLOCK_HEAD HEAD; // 头信息
char KHBSLX; // '0'-'9'交易所代码(参看柜台设置)
// 'Z' 资金帐号
// 'C' 磁卡号
[MarshalAs(UnmanagedType.ByValArray, SizeConst=31)]
byte[] KHBS; // KHBS 股东代码或资金帐号或磁卡号

[MarshalAs(UnmanagedType.ByValArray, SizeConst=11)]
byte[] JYMM; // JYMM 交易密码
}

[DllImport("...")]
extern static int KDAPI_Request_MT(ref MMJY_Request request, int nConnectionNo, ref uint sClientSocket);

111,092

社区成员

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

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

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