1. 程式人生 > >JNI與C++的資料型別轉換

JNI與C++的資料型別轉換

std::string轉jstring

jstring ToJString(JNIEnv* env, const std::string& value) {
  return env->NewStringUTF(value.c_str());
}

jstring轉std::string

std::string ToCppString(JNIEnv* env, jstring value) {
  jboolean isCopy;
  const char* c_value = env->GetStringUTFChars(value, &isCopy);
  std::string
result(c_value); if (isCopy == JNI_TRUE) env->ReleaseStringUTFChars(value, c_value); return result; }

bool轉jboolean

jboolean ToJBool(bool value) {
  return value ? JNI_TRUE : JNI_FALSE;
}

jboolean轉bool

bool ToCppBool(jboolean value) {
  return value == JNI_TRUE;
}

其他基本資料型別可直接轉換

參考自android-5.1.1_r1\frameworks\base\media\mca\filterfw\jni\jni_util.cpp

相關推薦

QTC++資料型別轉換

Qt的資料型別與標準c++是不一樣的,在開發的時候,必然會涉及到很多資料型別的轉換。早已厭倦了百度QString轉QByteArray,QByteArray轉char*,QString轉string…。Qt的第一篇文章,就先來總結一下我用過的資料之間的轉換。 1、QString轉QByt

C#C++資料型別比較及結構體轉換

//c++:HANDLE(void *) —- c#:System.IntPtr //c++:Byte(unsigned char) —- c#:Sy

4.Java_關鍵字this、super、static、final(終結器)基本資料型別轉換

一、關鍵字this 1.表示呼叫本類屬性:在類中訪問類的屬性,一定要加上this關鍵字。 2.表示呼叫本類方法:         (1)呼叫普通方法:this.方法名(引數);   當有類的繼承關係時,表示本類方法一定要加上th

C# 資料型別轉換 顯式轉型、隱式轉型、強制轉型

C# 的型別轉換有 顯式轉型 和 隱式轉型 兩種方式。 顯式轉型:有可能引發異常、精確度丟失及其他問題的轉換方式。需要使用手段進行轉換操作。 隱式轉型:不會改變原有資料精確度、引發異常,不會發生任何問題的轉換方式。由系統自動轉換。  不同型別的資料進行操作(加減乘除賦值等等),是需要

C#資料型別轉換之string到int型陣列

已知: string str = "1,2,3,4,5" 問: 如何根據上述字串產生一個int[]陣列?(int[] intLst = {1,2,3,4,5}) 答: 首先:string strLst = str.Split( ',' )  然後:int[] int

C# 資料型別轉換 顯式轉型、隱式轉型、強制轉型

C# 的型別轉換有 顯式轉型 和 隱式轉型 兩種方式。 顯式轉型:有可能引發異常、精確度丟失及其他問題的轉換方式。需要使用手段進行轉換操作。 隱式轉型:不會改變原有資料精確度、引發異常,不會發生任何問題的轉換方式。由系統自動轉換。  不同型別的資料進行操作(加減乘除賦值等等),是需要進行 型別轉換 後,才能繼

小端模式強制資料型別轉換

        當運算元的型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。強制型別轉換具有兩種形式,稱為顯式強制轉換和隱式強制型別轉換。4.1.顯式強制型別轉換         顯式強制型別轉換需要使用強制型別轉換運算子,格式如下:  type(<expressio

使用者自定義型別C#基礎型別轉換的方式

      比如現在有一個Person類,包含兩個屬性:name和age,現在我想把現在例項化一個Person類,名稱為p,我現在想把p轉換成我想要的string型別,有如下三種方式:       1、在Person類中,重寫系統定義的ToString()方法:    

C++C#資料型別對應關係總結

API與C#的資料型別對應關係表 API資料型別 型別描述 C#型別 API資料型別 型別描述 C#型別 WORD 16位無符號整數 ushort CHAR 字元 char LONG 32位無符號整數 int DWORDLONG 64位

Java中 鍵盤錄入Scanner,String Integer資料型別轉換

Scanner的使用 (1)用於鍵盤錄入資料的類。 (2): A:講解了System.in這個東西。 它其實是標準的輸入流,對應於鍵盤錄入 B:常用的格式

c/c++c#的型別轉換

Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char DOUBLE Double DW

SQL Server ORACLE資料型別轉換對應關係

關於SQL Server與Oracle資料型別的對應關係可以通過下面的語句進行查詢 SELECT * FROMmsdb.dbo.MSdatatype_mappings wheredbms_name

C資料型別轉換小結(int轉換char時有問題)

當賦值運算子兩邊的運算物件型別不同時,將要發生型別轉換, 轉換的規則是:把賦值運算子右側表示式的型別轉換為左側變數的型別。具體的轉換如下: (1) 浮點型與整型 ● 將浮點數(單雙精度)轉換為整數時,將捨棄浮點數的小數部分, 只保留整數部分。

C/C++資料型別轉換小結

在程式設計的過程中,經常遇到變數型別轉換問題,在此小結一下:包含char*與string、wstring,CString之間的轉換;char*、string與int、float、double之間的轉換;以下程式的標頭檔案#include<iostream> #in

Android中JNI使用詳解(4)---JavaC之間資料型別轉換

Jni中基本型別轉換對應的表格 Java型別 本地型別 說明 boolean jboolean 無符號,8位 byte jbyte

JNIC++的資料型別轉換

std::string轉jstring jstring ToJString(JNIEnv* env, const std::string& value) { return env-&g

C移植到Java中,byte[]其他資料型別轉換

最近在把C程式碼移植到Java(Android)中,C中一般的資料都會使用byte[](unsigned char)來儲存,且位操作特別頻繁。我要把這些資料轉換成在Java儲存,或把byte轉換成本語言的其他型別,掉進不少坑。這裡,總結下這段時間我遇到的轉換問題。 一、C與Java的變數

JNI native層、C++非同步回撥JAVA程式碼。JNI資料型別轉換

現在專案做移植的。 windows轉移到Linux下,多程序的程式。 本來windows下用MFC做的介面,現在決定Linux下介面用java或者python做。。。 java和其他C++程序用JNI來融合到一起。。。 java部分的程式碼如下: public clas

c++筆記之資料型別轉換

#include <iostream> #include <string> using namespace std; class Complex { public: Complex() //預設建構函式 { real = 0; imag = 0;

C#常用資料型別轉換工具類

using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.IO; using System.Text; /// <summary> /