【问题标题】:converting jint to jstring将 jint 转换为 jstring
【发布时间】:2012-05-16 17:52:29
【问题描述】:
#include <stdio.h>
#include "Package_MyTester.h"

jstring Java_Package_MyTester_NMethod
 (JNIEnv *env, jobject obj, jint first, jint second) {
  jint result_i = first * second;
  jstring result;
  int x = 0;
  for(x=0;x<5;x++) {
      printf("%d",x);
  }

  return result;      
}

这个程序将两个 jints 相乘。结果必须在 jstring 中。有没有办法将 jint 转换为 jstring ?。

【问题讨论】:

  • @BhavikAmbani 因为 JNI 是 Java 原生接口

标签: java c java-native-interface type-conversion


【解决方案1】:

您需要创建一个包含结果的 C 缓冲区(使用 sprintf),然后返回 NewStringUTF 函数的结果:

jstring Java_Package_MyTester_NMethod
 (JNIEnv *env, jobject obj, jint first, jint second) {
  jint result_i = first * second;
  char buf[64]; // assumed large enough to cope with result

  sprintf(buf, "%d", result_i);  // error checking omitted

  return (*env)->NewStringUTF(env, buf);      
}

参见http://java.sun.com/docs/books/jni/html/objtypes.html 的§3.2.3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2015-07-12
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多