//m_struPtzCfg 这个东西是个结构体
Int32 nSize = Marshal.SizeOf(m_struPtzCfg);
IntPtr ptrPtzCfg = Marshal.AllocHGlobal(nSize);
Marshal.StructureToPtr(m_struPtzCfg, ptrPtzCfg, false);
//m_struPtzCfg 这个东西是个结构体,就是这个
public struct NET_DVR_PTZPOS
{
public ushort wAction;//获取时该字段无效
public ushort wPanPos;//水平参数
public ushort wTiltPos;//垂直参数
public ushort wZoomPos;//变倍参数
}
对于这种代码 C++ 不就是最擅长做的吗?冒昧的说一句,题主是没有好好学 C++ 吧。既然要帮了你了,就把代码给你看看:
#include <iostream>
struct NET_DVR_PTZPOS
{
unsigned short wAction;//获取时该字段无效
unsigned short wPanPos;//水平参数
unsigned short wTiltPos;//垂直参数
unsigned short wZoomPos;//变倍参数
};
int main()
{
NET_DVR_PTZPOS* ptrPtzCfg = new NET_DVR_PTZPOS{1,2,3,4}; //这个是你的指针指向的内容,我假设是这个内容
NET_DVR_PTZPOS m_struPtzCfg; //你要转化的结构体
memcpy(&m_struPtzCfg, ptrPtzCfg,sizeof(NET_DVR_PTZPOS)); //拷贝过去
return 0;
}
如果有不懂的话,可以追问。
我一个学Java的,被招进来做C#,现在又要开发C++,我已经在转型了[笑死]
Hello,C++有没有那种现成的进制转换的方法?
类似于C#的
int x = 10;
Convert.ToUInt16(x.toString(), 16);
@echo_lovely: 据我所知,只有转字符串有现成的。C++自带的库是没有的。
@echo_lovely: 一种方式是通过进制的定义实现,第二个是vsscanf_s
配合va_list
实现。给你后者的例子,前者很简单,比较好实现。
#include <iostream>
#include <cstdarg>
int HexToInt(char* numstring, char* format, ...)
{
int result;
va_list arglist;
va_start(arglist, format);
result = vsscanf_s(numstring, format, arglist);
va_end(arglist);
return result;
}
int main()
{
char* t = "10";
int num;
HexToInt(t, "%x", &num);
return 0;
}
上面C#的写法是按照C++的习惯写的
获取内存大小,分配内存