我是靠谱客的博主 迷路大门,最近开发中收集的这篇文章主要介绍智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C#中调用:

        [DllImport(DLLName, EntryPoint  =   " pdaAppRead " , CharSet  =  CharSet.Auto, SetLastError  =   true )]
        
public   static   extern   short  td_select(Int32 Adr,  byte [] getData);
private   void  button1_Click( object  sender, EventArgs e) //
{          
   
string s = "这是测试1";
   s 
= textBox1.Text;
   
byte[] b = Encoding.Unicode.GetBytes(s);//Encoding.Default.GetBytes(s);也可以;
  td_select(2, s);
}

 

C++ 

 

LPSTR unicodeTOmbcs(CString str)
{
  LPSTR retlpa;
LPCOLESTR lpw;
    lpw
=(LPCOLESTR)str;
    size_t wLen 
= wcslen( lpw ) + 1;  // 宽字符字符长度,+1表示包含字符串结束符

    
int aLen=WideCharToMultiByte(  // 第一次调用,计算所需 MBCS 字符串字节长度
        CP_ACP,
        
0,
        lpw,  
// 宽字符串指针
        wLen, // 字符长度
        NULL,
        
0,  // 参数0表示计算转换后的字符空间
        NULL,
        NULL);

    LPSTR lpa 
= new char [aLen];

    WideCharToMultiByte(
        CP_ACP,
        
0,
        lpw,
        wLen,
        lpa,  
// 转换后的字符串指针
        aLen, // 给出空间大小
        NULL,
        NULL);
    
// 此时,lpa 中保存着转换后的 MBCS 字符串

retlpa
=lpa;
delete [] lpa;
return retlpa;
}


int  td_select(unsigned  char  _Adr,unsigned  char   * _Data)
{
CString inputstr
=(LPCWSTR)_Data;
CString result;
LPSTR lpa
=NULL;
unsigned 
char data[16];
lpa
=unicodeTOmbcs(inputstr);//转换
strcpy((char *)data,(const char *)lpa);//data 这是测试1
}

 

最后

以上就是迷路大门为你收集整理的智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组的全部内容,希望文章能够帮你解决智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部