본문 바로가기

Android

[JNI] JNI 형식 및 데이터 구조

 

 

 

 

 

Java Type

 

 

 

Java Type
Native Type
Description
boolean
jboolean
unsigned 8 bits
byte
jbyte
signed 8 bits
char
jchar
unsigned 16 bits
short
jshort
signed 16 bits
int
jint
signed 32 bits
long
jlong
signed 64 bits
float
jfloat
32 bits
double
jdouble
64 bits
void
void
N/A

 

 

 

 

 

 

 

JNI Java 개체의 다른 종류에 해당 하는 참조 형식의 수를 포함 합니다

 

 

 

 

C에서 모든 jni 참조형식은 jobject 와 동일하게 정의 됩니다.

typedef jobject jclass; 처럼

 

 

jvalue union 형식 인수 배열에서 요소 형식으로 사용 됩니다. 그것은 다음과 같이 선언 됩니다.

typedef union jvalue { 
    jboolean z; 
    jbyte    b; 
    jchar    c; 
    jshort   s; 
    jint     i; 
    jlong    j; 
    jfloat   f; 
    jdouble  d; 
    jobject  l; 
} jvalue; 

 

 

 

 JNI 수정된 utf-8 문자열을 사용하여 다양 한 문자열 형식을 나타냅니다

수정된 utf-8 문자열 Java VM에 의해 사용 된 것과 동일 합니다.

하지만 모든 유니코드 문자 당 1 바이트만 사용 하 여만 null이 아닌 ASCII 문자가 포함 된 시퀀스를 표현 하는

문자를 나타낼 수 있도록 인코딩됩니다.

범위 \u0001 \u007F 하에서 모든 문자 1 바이트 같이 표시 됩니다.

0

비트 6-0

7 비트 데이터 바이트에 표현 하는 문자 값을 제공 합니다.

Null 문자 ('\u0000') 및 문자 범위 '\u0080' '\u07FF' 를 바이트 쌍으로 표시 됩니다

x:

1

1

0

비트 10-6
y:

1

0

비트 5-0

 

문자 코드 포인트 U + FFFF (소위 보충 문자) 위에 별도로 인코딩을 u t F-16 표현 그들의 두 명의 서로게이트 코드 단위 표시 됩니다. 각 서로게이트 코드 단위가 3 바이트로 표현 됩니다. 즉, 보충 문자 6 바이트, u, v, w, x, yz 에 의해 표시 됩니다.:

u:

1

1

1

0

1

1

0

1
v:

1

0

1

0

(20-16 비트)-1
승:

1

0

비트 15-10
x:

1

1

1

0

1

1

0

1
y:

1

0

1

1

비트 9-6
z:

1

0

비트 5-0

문자 값 0x10000 + ((v&0x0f) << 16) + ((w&0x3f) << 10) + (y & 0x0f) << 6) + (z & 0x3f) 6 바이트로 표현 됩니다.

멀티 바이트 문자의 바이트 빅 엔디안에 class 파일에 저장 됩니다 (높은 바이트 첫 번째) 순서.

이 형식 및 표준 utf-8 형식 간의 두 가지 차이점이 있습니다. 첫째, null 문자 (char)0 1 바이트 형식 보다는 2 바이트 형식을 사용 하 여 인코딩됩니다. 이 utf-8 문자열 수정된 결코 포함 null 의미 합니다. 둘째, 표준 u t F-8의 1 바이트, 2 바이트, 3 바이트 형식만 사용 됩니다. Java VM 표준 u t F-8; 4 바이트 형식으로 인식 하지 않습니다. 자체 둘 times-3 바이트 형식 대신 사용합니다.

 

 

 

출처 : http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/types.html