jstring to char * in c用法不转换为可打印格式

时间:2015-11-03 10:13:36

标签: java c java-native-interface zos invocation-api

我正在使用z / os上的Invocation API运行一个简单的JNI程序.Java程序有一个像这样的简单sayHello()方法 -

public static String sayHello(){
    return "Hello World!!!";
}

调用此方法并打印输出的代码如下 -

jmethodID mid=(*env)->GetStaticMethodID(env,cls2,sHStr,sigVoidString);
 jstring j = (jstring)(*env)->CallStaticObjectMethod(env,cls2, mid);
 const char *str = (*env)->GetStringUTFChars(env, j, NULL);
 printf("%s", str);
 (*env)->ReleaseStringUTFChars(env,j,str);

输出打印如下 -

.. %%?..?%....

打开HEX会显示以下内容,表明确实是HelloWorld !!! -

46666256766222
85CCF07F2C4111

我已经检查过几篇关于thisthis等相同问题的SO帖子,并且每个帖子都建议使用我使用的GetStringUTFChars而没有任何成功。 z / os有什么特定的东西在这里吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,使用__atoe()函数对我有用。

相关问题