C# C++ Java接口类型转换

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

 1 #include "stdafx.h"
 2 #include <cstdlib>
 3 #include <cstdio>
 4 #include <iostream>
 5 #include "jstring_Cstring_char_ptr.h"
 6 #include <malloc.h>
 7 #include <Windows.h>
 8
 9 using namespace std;
10 using namespace  System::Runtime::InteropServices;
11 using namespace  System;
12
13 //char* ->c#
14 System::String^ charptrtoCstring( const char* str )
15 {
16     System::String^ str1  =  Marshal::PtrToStringAnsi((IntPtr)(char*)str);
17     return str1;
18 }
19
20
21 //C#->char*
22 char* Cstringtocharptr( System::String^ s )
23 {
24     char* buffer = (char*)(void*)Marshal::StringToHGlobalAnsi(s);
25     return buffer;
26 }
27
28
29 //jstring ->char*
30 char* jstringTocharptr( JNIEnv *env, jstring jstr )
31 { //UTF8/16转换成gb2312
32     int length = (env)->GetStringLength(jstr );
33     const jchar* jcstr = (env)->GetStringChars(jstr, 0 );
34     char* rtn = (char*)malloc( length*2+1 );
35     int size = 0;
36     size = WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,(length*2+1), NULL, NULL );
37     if( size <= 0 )
38         return NULL;
39     (env)->ReleaseStringChars(jstr, jcstr );
40     rtn[size] = 0;
41     return rtn;
42 }
43
44 //char* ->jstring
45 jstring charptrTojstring( JNIEnv* env, const char* str )
46 {//gb2312转换成utf8/16
47     jstring rtn = 0;
48     int slen = strlen(str);
49     unsigned short * buffer = 0;
50     if( slen == 0 )
51         rtn = (env)->NewStringUTF(str );
52     else
53     {
54         int length = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, NULL, 0 );
55         buffer = (unsigned short *)malloc( length*2 + 1 );
56         if( MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, (LPWSTR)buffer, length ) >0 )
57             rtn = (env)->NewString(  (jchar*)buffer, length );
58     }
59     if( buffer )
60         free( buffer );
61     return rtn;
62 }
63
64 //jchar ->char
65 char jchartochar( jchar c )
66 {
67     char ch = (char)(c & 0x00ff);
68     return ch;
69 }
70
71 //char* ->jchar
72 jchar charTojchar( char c )
73 {
74     jchar ch = (jchar)(c | 0xff00);
75     return ch;
76 }
77
78 //char ->C#
79 System::Char chartoChar( char c )
80 {
81     System::Char C = (System::Char)((int)(c));
82     return C;
83 }
84
85 //C#->char
86 char Chartochar( System::Char c )
87 {
88     char C = (char)((int)(c));
89     return C;
90 }
时间: 2024-08-30 04:32:08

C# C++ Java接口类型转换的相关文章

使用SWIG将C++接口转换成Java接口

以C++类classifier为例,文件保存于百度网盘 https://pan.baidu.com/s/1c2AwhaS(需密码) 系统:Ubuntu 15.04 参考资料: ubuntu源码安装swig 利用swig转换C++接口到Java接口 SWIG3.0说明文档 编程中出现的错误: java编译时出现undefined symbol:... 此种情况大部分原因是需要在原来的C++库中添加链接某lib....so文件(undefined symbol: _ZN5boost6system15

Java 接口和抽象类区别

1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了.当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 .面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用. 说到了抽象,我就不能不提到曾让我头痛的Java接口和Java抽象类了,这也是本文我想说的重点. 既然面向对象设计的重点在于

java 接口的作用和好处

1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意义很疑惑.不知道接口到底是有什么作用,为什么要定义接口. 好像定义接口是提前做了个多余的工作.下面我给大家总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Jav

java接口调用——webservice就是一个RPC而已

很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过socket实现rpc,以及服务的注册和动态上下线.这里先上一篇RPC的实现者一webservice,便于后面理解源码执行过程,框架就是在原理的基础上提供更加便捷的使用而已,协议就是基于TCP或UDP之上,服务者和调用者之间约定消息按照什么样的格式发送以及解析罢了.协议没什么高深莫测的. 原文和作者

java接口相关例题

java接口相关习题 interface Graphics{  //接口里面只能用抽象方法  public abstract double area();    }//设置 平面类class PlaneGraphics1{    private String shape; //形状    //构造方法,有参数    public PlaneGraphics1(String shape)    {        this.shape=shape;    }    //无参数    public P

hadoop java接口及常用api

# java接口及常用api package com.yting.hadoop.hdfs; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputS

Java数据类型转换

Java数据类型转换 1.题目    以下代码输出的结果是: /** * @Title:NumEqual.java * @Package:com.you.user.util * @Description:数据类型转换 * @author:Youhaidong(游海东) * @date:2014-7-23 下午9:38:56 * @version V1.0 */ package com.you.user.util; /** * 类功能说明 * 类修改者 修改日期 * 修改说明 * <p>Titl

Java 数据类型转换

int iValue = new Integer(strValue).intValue();String str = intObj.toString();int number = Integer.parseInt(str); public static Object read(String value, Class type) {        Object ret = value;        if (Integer.TYPE.equals(type)) {            ret =

JAVA接口示例

总感觉有点虚,但慢慢找到感觉了.将对象放进数组里,这就比较深入了. interface drawTest{ public void draw(); public void doAnyThing(); } class ParallelogramUserInterface extends QuadrangleUserInterface implements drawTest{ public void draw(){ System.out.println("Parallelogram.draw()&q