JNI的一些工具函数

来源:互联网 发布:linux touch 编辑:程序博客网 时间:2024/04/27 22:04
#include "toolkits.h"namespace io{    //将字符串转化为jbyte数组    static jbyteArray getByteArray(JNIEnv *env,const char *buf,len)    {        jbyteArray byteArray = env -> NewByteArray(len);        const jbyte *bytes = (const jbyte*)buf;        env -> setByteArrayRegion(byteArray,0,len,bytes);        return byteArray;    }    //将字符串转化为jchar数组    static jcharArray getCharArray(JNIEnv *env,const char *buf,int len)    {        nlen = len + sizeof(jchar) -1 / sizeof(jchar);        const jchar *nbuf = (const jchar *) buf;        jcharArray chars = env -> NewCharArray(nlen);        env -> SetCharArrayRegion(chars,0,nlen,nbuf);    }        //将jchar数组转化为字符串    static const char * getCharPointer(JNIEnv *env,jcharArray chars)    {        jchar *buf = env -> GetCharArrayElements(char,JNI_FALSE);        if(!buf)        {            return NULL;        }        return (const char *) buf;    }        //将jbyte转化成字符串    static const char * getCharPointer(JNIEnv *env,jbyteArray bytes)    {        jbyte *buf = env -> GetByteArrayElements(bytes,JNI_FALSE);        if(!buf)        {            return NULL;        }        return (const char *) buf;    }        //将jstring转化成string    static string getString(JNIEnv *env,jstring javaString)    {        const char * str = env -> GetStringUTFChars(javaString,JNI_FALSE);        string ret = string(str);        env -> ReleaseStringUTFChars(javaString,str);        return ret;    }        //将string转化成jstring    static jstring getJString(JNIEnv *env,string str)    {        return getString(env,str.c_str(),str.length());    }        //将字符串转化成jstring    static jstring getJString(JNIEnv *env,const char *buf,int len)    {        return env -> NewStringUTF(buf);    }        static void printHex(const char *buf,int len)    {        char temp[len * 2 + 1];        memset(temp,0,len * 2 + 1);        for(int i = 0; i < len; i++)        {            sprintf(temp + i,"%02x",buf[i]);        }    }}

0 0