转载自

C++和C#转换

https://www.cnblogs.com/zjoch/p/4147182.html

c#与C++类型转换,网摘

//c++:HANDLE(void   *)          ----    c#:System.IntPtr       
//c++:Byte(unsigned   char)     ----    c#:System.Byte        
//c++:SHORT(short)              ----    c#:System.Int16        
//c++:WORD(unsigned   short)    ----    c#:System.UInt16       
 //c++:INT(int)                 ----    c#:System.Int16       
//c++:INT(int)                  ----    c#:System.Int32        
//c++:UINT(unsigned   int)      ----    c#:System.UInt16       
//c++:UINT(unsigned   int)      ----    c#:System.UInt32       
//c++:LONG(long)                ----    c#:System.Int32        
//c++:ULONG(unsigned   long)    ----    c#:System.UInt32        
//c++:DWORD(unsigned   long)    ----    c#:System.UInt32        
//c++:DECIMAL                   ----    c#:System.Decimal        
//c++:BOOL(long)                ----    c#:System.Boolean        
//c++:CHAR(char)                ----    c#:System.Char        
//c++:LPSTR(char   *)           ----    c#:System.String        
//c++:LPWSTR(wchar_t   *)       ----    c#:System.String        
//c++:LPCSTR(const   char   *)  ----    c#:System.String        
//c++:LPCWSTR(const   wchar_t   *)      ----    c#:System.String        
//c++:PCAHR(char   *)   ----    c#:System.String        
//c++:BSTR              ----    c#:System.String        
//c++:FLOAT(float)      ----    c#:System.Single        
//c++:DOUBLE(double)    ----    c#:System.Double        
//c++:VARIANT           ----    c#:System.Object        
//c++:PBYTE(byte   *)   ----    c#:System.Byte[]        
//c++:BSTR      ----    c#:StringBuilder       
//c++:LPCTSTR   ----    c#:StringBuilder       
//c++:LPCTSTR   ----    c#:string       
//c++:LPTSTR    ----    c#:[MarshalAs(UnmanagedType.LPTStr)] string        
//c++:LPTSTR 输出变量名    ----    c#:StringBuilder 输出变量名       
//c++:LPCWSTR   ----    c#:IntPtr       
//c++:BOOL      ----    c#:bool          
//c++:HMODULE   ----    c#:IntPtr           
//c++:HINSTANCE ----    c#:IntPtr        
//c++:结构体    ----    c#:public struct 结构体{};        
//c++:结构体 **变量名   ----    c#:out 变量名  
//C#中提前申明一个结构体实例化后的变量名       
//c++:结构体 &变量名    ----    c#:ref 结构体 变量名                
//c++:WORD      ----    c#:ushort       
//c++:DWORD     ----    c#:uint       
//c++:DWORD     ----    c#:int       
//c++:UCHAR     ----    c#:int       
//c++:UCHAR     ----    c#:byte       
//c++:UCHAR*    ----    c#:string       
//c++:UCHAR*    ----    c#:IntPtr       
//c++:GUID      ----    c#:Guid       
//c++:Handle    ----    c#:IntPtr       
//c++:HWND      ----    c#:IntPtr       
//c++:DWORD     ----    c#:int       
//c++:COLORREF  ----    c#:uint       
//c++:unsigned char     ----    c#:byte       
//c++:unsigned char *   ----    c#:ref byte       
//c++:unsigned char *   ----    c#:[MarshalAs(UnmanagedType.LPArray)] byte[]       
//c++:unsigned char *   ----    c#:[MarshalAs(UnmanagedType.LPArray)] Intptr       
//c++:unsigned char &   ----    c#:ref byte       
//c++:unsigned char 变量名      ----    c#:byte 变量名       
//c++:unsigned short 变量名     ----    c#:ushort 变量名       
//c++:unsigned int 变量名       ----    c#:uint 变量名       
//c++:unsigned long 变量名      ----    c#:ulong 变量名       
//c++:char 变量名       ----    c#:byte 变量名  
//C++中一个字符用一个字节表示,C#中一个字符用两个字节表示       
//c++:char 数组名[数组大小]     ----    c#:MarshalAs(UnmanagedType.ByValTStr, SizeConst = 数组大小)]       
public string 数组名; ushort       
//c++:char *            ----    c#:string

//传入参数       
//c++:char *            ----    c#:StringBuilder
//传出参数       
//c++:char *变量名      ----    c#:ref string 变量名

//c++:char *输入变量名  ----    c#:string 输入变量名       
//c++:char *输出变量名  ----    c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 输出变量名       
//c++:char **           ----    c#:string       
//c++:char **变量名     ----    c#:ref string 变量名       
//c++:const char *      ----    c#:string       
//c++:char[]            ----    c#:string       
//c++:char 变量名[数组大小]     ----    c#:[MarshalAs(UnmanagedType.ByValTStr,SizeConst=数组大小)] public string 变量名;

//c++:struct 结构体名 *变量名   ----    c#:ref 结构体名 变量名

//c++:委托 变量名   ----    c#:委托 变量名       
//c++:int       ----    c#:int       
//c++:int       ----    c#:ref int       
//c++:int &     ----    c#:ref int       
//c++:int *     ----    c#:ref int     
//C#中调用前需定义int 变量名 = 0;       
//c++:*int      ----    c#:IntPtr       
//c++:int32 PIPTR *     ----    c#:int32[]       
//c++:float PIPTR *     ----    c#:float[]               
//c++:double** 数组名          ----    c#:ref double 数组名       
//c++:double*[] 数组名          ----    c#:ref double 数组名       
//c++:long          ----    c#:int       
//c++:ulong         ----    c#:int               
//c++:UINT8 *       ----    c#:ref byte      
//C#中调用前需定义byte 变量名 = new byte();               
//c++:handle    ----    c#:IntPtr       
//c++:hwnd      ----    c#:IntPtr                       
//c++:void *    ----    c#:IntPtr               
//c++:void * user_obj_param    ----    c#:IntPtr user_obj_param       
//c++:void * 对象名称    ----    c#:([MarshalAs(UnmanagedType.AsAny)]Object 对象名称               
//c++:char, INT8, SBYTE, CHAR                               ----    c#:System.SByte         
//c++:short, short int, INT16, SHORT                        ----    c#:System.Int16         
//c++:int, long, long int, INT32, LONG32, BOOL , INT        ----    c#:System.Int32         
//c++:__int64, INT64, LONGLONG                              ----    c#:System.Int64         
//c++:unsigned char, UINT8, UCHAR , BYTE                    ----    c#:System.Byte         
//c++:unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t             ----   c#:System.UInt16

//c++:unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT      ----   c#:System.UInt32

//c++:unsigned __int64, UINT64, DWORDLONG, ULONGLONG                            ----   c#:System.UInt64

//c++:float, FLOAT                                                              ----   c#:System.Single

//c++:double, long double, DOUBLE                                               ----   c#:System.Double

//Win32 Types        ----  CLR Type                 
//Struct需要在C#里重新定义一个Struct       
//CallBack回调函数需要封装在一个委托里,delegate static extern int FunCallBack(string str);       
//unsigned char** ppImage替换成IntPtr ppImage       
//int& nWidth替换成ref int nWidth       
//int*, int&, 则都可用 ref int 对应       
//双针指类型参数,可以用 ref IntPtr       
//函数指针使用c++: typedef double (*fun_type1)(double); 对应 c#:public delegate double fun_type1(double);       
//char* 的操作c++: char*; 对应 c#:StringBuilder;       
//c#中使用指针:在需要使用指针的地方 加 unsafe

//unsigned   char对应public   byte

c#与C++类型转换网摘的更多相关文章

  1. Python入门及容易!网摘分享给大家!

    Python:Python学习总结 背景 PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#.@.@@也好不到哪里(OO人员最该学习的一门语言). Pyth ...

  2. Feedly订阅Blog部落格RSS网摘 - Blog透视镜

    网络信息爆炸的时代,如何更有效率地阅读文章,订阅RSS网摘,可以快速地浏览文章标题,当对某些文章有兴趣时,才点下连结连到原网站,阅读更详细的文章,Feedly Reader阅读器除了提供在线版订阅RS ...

  3. Bloglines订阅Blog部落格RSS网摘 - Blog透视镜

    网络信息蓬勃发展,Blog部落格越来越普及,如果逐一地去浏览网站,势必费时费力,倘若信息可以自己送上门,那就可以节省不少时间,就好像看报纸的标题,有兴趣才点连结,进到网站浏览文章内容,Blogline ...

  4. TCP/IP协议头部结构体(网摘小结)(转)

    源:TCP/IP协议头部结构体(网摘小结) TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #de ...

  5. Vim命令快捷键(网摘)

    Vim命令快捷键(网摘) 原文出处:[?---->home]

  6. Delphi 中DataSnap技术网摘

    Delphi2010中DataSnap技术网摘 一.为DataSnap系统服务程序添加描述 这几天一直在研究Delphi 2010的DataSnap,感觉功能真是很强大,现在足有理由证明Delphi7 ...

  7. 【网摘】DICOM 基础简介

    一 什么是DICOM?DICOM是Digital Imaging and Communication of Medicine的缩写,是美国放射学会(American College of Radiol ...

  8. 实际举例C#引用类型和值类型的区别<网摘>

    我们都知道,c#的两大数据类型分别为值类型和引用类型.很多人或许闭着眼睛都能说出值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等,但是当被问及到二者之间的联系和区别, ...

  9. PHP 调用微信JS-SDK 开发详解 [网摘]

    一:准备文件,并将文件置于网站根目录下 access_token.json {"access_token":"","expire_time" ...

随机推荐

  1. 关于时间戳截取的隐藏bug

    之前写时间戳,要截取后六位 原写法: function timeStamp() { const date = new Date() const month = date.getMonth() + 1 ...

  2. 框架:Intellij搭建Spring框架

    第二章.Intellij搭建Spring框架 前提条件:jdk.jre已经安装完成 方法一.intellij下载jar 附:自带的jar的版本为4.3[2018/11/22] 第一步:选择File&g ...

  3. socketserver 和 事件Event

    socketserver 处理socket服务端 # 服务端TCP: import socketserver from threading import current_thread # fork l ...

  4. to linux

    apt-get update // 更新 apt sudo apt-get install git // 安装git git clone git://github.com/yyuu/pyenv.git ...

  5. L1-028. 判断素数

    本题的目标很简单,就是判断一个给定的正整数是否素数. 输入格式: 输入在第一行给出一个正整数N(<=10),随后N行,每行给出一个小于231的需要判断的正整数. 输出格式: 对每个需要判断的正整 ...

  6. anaconda jupyter notebook修改默认文件路径

    使用anaconda附带的jupyter,想要改变默认运行文件路径,直接在cmd中输入jupyter notebook会提示:jupyter不是内部命令! 可能是anaconda代理了他所安装的软件, ...

  7. 支付宝异步通知(notify_url)与return_url.

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  8. nodejs的express框架(request,response方法汇总)

    Response 对象 - response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据.常见属性有: res.app:同req.app一样 res.append() ...

  9. 海康抓拍机SDK开发

    前言 项目采购的海康威视的抓拍机,需要首先获取抓拍图片,之后基于抓拍图片进行图像处理.本文基于海康SDK开发文档,按照开发步骤,咨询海康技术人员,现将开发过程记录如下. 主要过程的c++代码: /** ...

  10. 双向重定向tee命令详解

    vim一般在训练网络的时候需要保存log文件,同时需要在屏幕上网络的输出信息,在shell文件中常常会看到如下代码 执行的命令 2>&1 | tee log.txt tee是linux中 ...