Android C++: 将 std::string 转换为 Java byte 数组
Android C++: 将 std::string 转换为 Java byte 数组
本文将指导您如何在 Android 开发中使用 JNI 将 C++ 的 std::string 对象转换为 Java 的 byte 数组对象。
代码示例
以下示例代码演示了如何实现转换功能:
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jbyteArray JNICALL
Java_com_example_androidproject_MainActivity_convertStringToByteArray(JNIEnv *env, jobject /* this */, jstring inputString) {
// 获取输入的 std::string
const char *nativeString = env->GetStringUTFChars(inputString, nullptr);
std::string cppString(nativeString);
env->ReleaseStringUTFChars(inputString, nativeString);
// 将 std::string 转换为 byte 数组
jbyteArray byteArray = env->NewByteArray(cppString.length());
env->SetByteArrayRegion(byteArray, 0, cppString.length(), reinterpret_cast<const jbyte *>(cppString.c_str()));
return byteArray;
}
上述代码是一个 JNI 函数,它接收一个 Java 字符串 (jstring) 并将其转换为 C++ 的 std::string 对象。然后,将 std::string 对象转换为 Java 的 byte 数组对象 (jbyteArray)。
使用说明
- 将此函数添加到您的 Android 项目中的 JNI 代码中。
- 在需要转换的地方调用该函数。
请注意:
- 此示例假设您已设置 JNI 环境并包含了
jni.h头文件。 - 您需要将
com_example_androidproject_MainActivity替换为您的 Java 类完整路径。
完整示例代码和演示项目
您可以在以下 GitHub 地址查看完整示例代码和演示项目:
https://github.com/example/android-convert-string-to-bytearray
原文地址: https://www.cveoy.top/t/topic/p9bK 著作权归作者所有。请勿转载和采集!