JNI:基本数据类型转换

来源:互联网 发布:施工图设计优化 编辑:程序博客网 时间:2024/06/05 09:52
  1. #include <jni.h>  
  2. #include "com_test_Test.h"  
  3. #include <stdio.h>  
  4. #include <stdlib.h>  
  5. #include <strings.h>  
  6.   
  7. //获取字符串  
  8. JNIEXPORT void JNICALL Java_com_test_Test_sayHello(JNIEnv * env, jobject obj,  
  9.   jstring s) {  
  10.   
  11.  char * str = (char *) (*env)->GetStringUTFChars(env, s, 0);  
  12.  printf("\n c-string: hello - %s", str);  
  13.   
  14. }  
  15.   
  16. //获取,返回int  
  17. JNIEXPORT jint JNICALL Java_com_test_Test_add(JNIEnv * env, jobject obj,  
  18.   jint a, jint b) {  
  19.  int i = a;  
  20.  int j = b;  
  21.  printf("\n c-int: %d - %d", i, j);  
  22.  char str[256];  
  23.  sprintf(str, "%d", i + j);  
  24.  return (jint) i + j;  
  25. }  
  26.   
  27. //获取,返回float  
  28. JNIEXPORT jfloat JNICALL Java_com_test_Test_getFloat(JNIEnv * env, jobject obj,  
  29.   jfloat f) {  
  30.  float fl = f;  
  31.  printf("\n c-float: %3f", fl);  
  32.   
  33.  fl = 200.555;  
  34.  return (jfloat) fl;  
  35. }  
  36.   
  37. //获取,返回 double  
  38. JNIEXPORT jdouble JNICALL Java_com_test_Test_getDouble(JNIEnv * env,  
  39.   jobject obj, jdouble dou) {  
  40.  double d = dou;  
  41.  printf("\n c-double: %3f", d);  
  42.   
  43.  d = 800.88;  
  44.  return (jdouble) d;  
  45. }  
  46.   
  47. //获取,返回boolean  
  48. JNIEXPORT jboolean JNICALL Java_com_test_Test_getBoolean(JNIEnv * env,  
  49.   jobject obj, jboolean bool) {  
  50.   
  51.  unsigned char b = bool;  
  52.  printf("\n c-boolean: %lu  ", b);  
  53.  if (b) {  
  54.   printf("true");  
  55.  } else {  
  56.   printf("false");  
  57.  }  
  58.   
  59.  b = 1;  
  60.  return (jboolean) b;  
  61. }  
  62.   
  63. //获取,返回 string  
  64. JNIEXPORT jstring JNICALL Java_com_test_Test_getString(JNIEnv * env,  
  65.   jobject obj, jstring s) {  
  66.  char * st = (char *) (*env)->GetStringUTFChars(env, s, 0);  
  67.  printf("\n c-string:  %s", st);  
  68.   
  69.  char * str = "hello wang wu!";  
  70.  jstring rtn;  
  71.  rtn = (*env)->NewStringUTF(env, str);  
  72.  return rtn;  
  73. }  
  74.   
  75. //获取,返回 string []  
  76. JNIEXPORT jobjectArray JNICALL Java_com_test_Test_getStringArray(JNIEnv * env,  
  77.   jobject obj, jobjectArray arr) {  
  78.  int len = (*env)->GetArrayLength(env, arr);  
  79.  printf("\n c-stringArray :");  
  80.  int i = 0;  
  81.  for (i = 0; i < len; i++) {  
  82.   jobject obj = (*env)->GetObjectArrayElement(env, arr, i);  
  83.   jstring str = (jstring) obj;  
  84.   const char * szStr = (*env)->GetStringUTFChars(env, str, 0);  
  85.   printf(" %d-%s ", i, szStr);  
  86.   (*env)->ReleaseStringChars(env, str, szStr);  
  87.  }  
  88.  //-----返回----  
  89.   
  90.  jstring str;  
  91.  jobjectArray args = 0;  
  92.  jsize size = 5;  
  93.  char* sa[] = { "Hello,""world!""zhang""san""yuang" };  
  94.  int j = 0;  
  95.  jclass objClass = (*env)->FindClass(env, "java/lang/String");  
  96.  args = (*env)->NewObjectArray(env, size, objClass, 0);  
  97.  for (j = 0; j < size; j++) {  
  98.   str = (*env)->NewStringUTF(env, sa[j]);  
  99.   (*env)->SetObjectArrayElement(env, args, j, str);  
  100.  }  
  101.  return args;  
  102. }  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卖家拒收退回来怎么办 群英会奖池钱不够买超了怎么办 三星s8卡顿严重怎么办 三星s8变卡了怎么办 新开店铺没有人怎么办 电视显示没有usb设备怎么办 华为平板电脑触摸屏没反应怎么办 平板电脑液晶显示屏坏了怎么办 6p的home键失灵怎么办 读书郎屏幕坏了怎么办 苹果平板激活锁忘了怎么办 平板电脑充电插口坏了怎么办? 电视频幕花了怎么办 苹果笔记本电脑硬盘坏了怎么办 mac屏幕压坏了怎么办 新电脑连不上网怎么办 新买电脑后悔了怎么办 装显卡后玩游戏黑屏怎么办 顺丰寄主机坏了怎么办 征信账户忘记了怎么办 疑似qq和疑似应用宝怎么办 荣大3608速印机卸版故障怎么办 配的近视眼镜看不清电脑屏幕怎么办 cad命令反应很慢怎么办 淘宝美工面试让作图怎么办 笔记本玩cf闪退怎么办 台式电脑玩lol卡怎么办 配置充足玩lol卡怎么办 电脑买贵了应该怎么办 微信红包收不了钱怎么办 mac版excel卡死怎么办 锐捷网卡为空怎么办 淘宝上买东西卖家不发货怎么办 快递员没给单号怎么办 淘宝物流把货弄丢了怎么办 刚买的卡没激活怎么办 腾讯王卡40g用完怎么办 手机欠费不知道电话号码怎么办 手机欠费了不用了怎么办 闲鱼恶意差评怎么办 淘宝买家账户体检中心违规怎么办