c#调用java接口方法参数类型转换,C# C++ Java接口类型转换

最近这几天做了一个兼职 ,主要是把C语言以及C#语言封装的dll,经过C++中转为Java语言支持的,主要其中的问题就是类型转换,在此

最近这几天做了一个兼职 ,主要是把C语言以及C#语言封装的dll,经过C++中转为Java语言支持的,,主要其中的问题就是类型转换,在此列出常用类型的转换过程。

#include "stdafx.h"

#include

#include

#include

#include "www_cnblogs_com\cyjwdm0503.h"

#include

#include

using namespace std;

using namespace  System::Runtime::InteropServices;

using namespace  System;

//char* ->c#

System::String^ charptrtoCstring( const char* str )

{

System::String^ str1  =  Marshal::PtrToStringAnsi((IntPtr)(char*)str);

return str1;

}

//C#->char*

char* Cstringtocharptr( System::String^ s )

{

char* buffer = (char*)(void*)Marshal::StringToHGlobalAnsi(s);

return buffer;

}

//jstring ->char*

char* jstringTocharptr( JNIEnv *env, jstring jstr )

{ //UTF8/16转换成gb2312

int length = (env)->GetStringLength(jstr );

const jchar* jcstr = (env)->GetStringChars(jstr, 0 );

char* rtn = (char*)malloc( length*2+1 );

int size = 0;

size = WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,(length*2+1), NULL, NULL );

if( size <= 0 )

return NULL;

(env)->ReleaseStringChars(jstr, jcstr );

rtn[size] = 0;

return rtn;

}

//char* ->jstring

jstring charptrTojstring( JNIEnv* env, const char* str )

{//gb2312转换成utf8/16

jstring rtn = 0;

int slen = strlen(str);

unsigned short * buffer = 0;

if( slen == 0 )

rtn = (env)->NewStringUTF(str );

else

{

int length = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, NULL, 0 );

buffer = (unsigned short *)malloc( length*2 + 1 );

if( MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, (LPWSTR)buffer, length ) >0 )

rtn = (env)->NewString(  (jchar*)buffer, length );

}

if( buffer )

free( buffer );

return rtn;

}

//jchar ->char

char jchartochar( jchar c )

{

char ch = (char)(c & 0x00ff);

return ch;

}

//char* ->jchar

jchar charTojchar( char c )

{

jchar ch = (jchar)(c | 0xff00);

return ch;

}

//char ->C#

System::Char chartoChar( char c )

{

System::Char C = (System::Char)((int)(c));

return C;

}

//C#->char

char Chartochar( System::Char c )

{

char C = (char)((int)(c));

return C;

}

本文永久更新链接地址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值