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)。

使用说明

  1. 将此函数添加到您的 Android 项目中的 JNI 代码中。
  2. 在需要转换的地方调用该函数。

请注意:

  • 此示例假设您已设置 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录