内容简介:而
std::string hello = "Hello from C++"; jstring jHello=env->NewStringUTF(hello.c_str()); 复制代码
char*转jstring
jstring util_char_to_jstring(JNIEnv *env, const char *pat) {
//定义java String类 strClass
jclass strClass = (env)->FindClass("java/lang/String");
//获取String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新String
jmethodID ctorID = (env)->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
//建立byte数组
jbyteArray bytes = (env)->NewByteArray(strlen(pat));
//将char* 转换为byte数组
(env)->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte *) pat);
// 设置String, 保存语言类型,用于byte数组转换至String时的参数
jstring encoding = (env)->NewStringUTF("utf-8");
//将byte数组转换为java String,并输出
return (jstring) (env)->NewObject(strClass, ctorID, bytes, encoding);
}
复制代码
jstring转char*:
void util_jstring_to_char(JNIEnv *env, jstring jstr, char *result) {
if (env == NULL || jstr == NULL) {
return;
}
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("utf-8");
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr = (jbyteArray) env->CallObjectMethod(jstr, mid, strencode);
jsize alen = env->GetArrayLength(barr);
jbyte *ba = env->GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0) {
memcpy(result, ba, alen);
result[alen] = 0;
}
env->ReleaseByteArrayElements(barr, ba, 0);
}
复制代码
而 char*
是可以直接赋值给 string
的:
string s; char *p = "hello";//直接赋值 s = p; 复制代码
int转string
string util_int_to_string(unsigned int n) {
string sResult;
stringstream ssTmp;
ssTmp << n;
ssTmp >> sResult;
return sResult;
}
复制代码
JByteArray转char*
char *convertJByteArrayToChar(JNIEnv *env, jbyteArray byYUV1_) {
jbyte *bytes = env->GetByteArrayElements(byYUV1_, 0);
int arrayLength = env->GetArrayLength(byYUV1_);
char *chars = new char[arrayLength + 1];
memset(chars, 0x0, arrayLength + 1);
memcpy(chars, bytes, arrayLength);
chars[arrayLength] = 0;
env->ReleaseByteArrayElements(byYUV1_, bytes, 0);
return chars;
}
复制代码
char*转JByteArray
jbyteArray util_char_to_jbyteArray(JNIEnv *env, char *data, int length) {
jbyte *by = (jbyte *) data;
jbyteArray jarray = env->NewByteArray(length);
env->SetByteArrayRegion(jarray, 0, length, by);
return jarray;
}
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 常用证书格式如何转换教程
- 标准库time中的常用时间转换方法
- JavaScript进阶系列-类型转换、隐式类型转换
- Android 多国语言转换 Excel 和 Excel 转换为 string
- [SSL证书转换(一)]关于JKS 转换成 CRT 和 KEY
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互...
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2011-11-18 / GBP 129.99
Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course wa......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!