Typkonvertierung von C auf Java

Ich Tat mein bestes, um Google diese aber nicht finden konnte, eine saubere Antwort in Form einer tabellarischen form, die zeigt, dass Typ-Konvertierungen.

Der Grund, ich möchte konvertieren, diese Typen, denn ich bin mit dem Android NDK aufrufen von Funktionen aus nativem code. Das problem ist, dass der native code nennt verschiedene Arten, die nicht in Java.

Habe ich eigentlich keine Erfahrung in C, und gefunden haben, diese wenigen Arten aus der Betrachtung code schnell. Bitte fühlen Sie sich frei zu Bearbeiten diesem post hinzufügen verschiedene Arten umgewandelt werden.

From C to Java

long ->

short ->

char ->

unsigned long ->

unsigned short ->

unsigned char ->

byte ->

Int8 ->

Int16 ->

Int32 ->

UInt8 ->

UInt16 ->

UInt32 ->

Auch, wenn diese nicht konvertieren kann in ein Java-Typ, erläutern Sie bitte warum.

  • Android Dalvik VM ist eine 32-bit-nur VM, so dass die Umstellung sollte trivial sein. Siehe auch stackoverflow.com/a/11527544/841108
  • Die signed-Typen mit vorgegebener Breite sollte die Karte zu byte, short, und int als pro das Java-Tutorial-Seite. Wie für die anderen, ein Weg, um herauszufinden, wäre zu drucken, was sizeof(long) et al. Sie sagen, Wann Sie lief auf Ihr Zielgerät. (Die Breite C-Datentypen ist in gewissem Umfang compiler und der Architektur.)
  • Aber <stdint.h> gibt Integrale Arten von bekannter Breite für C99.
  • Richtig, Sie sollten die j - Typen (jint, etc) in der interface - Ebene jni-code. Und es ist bis zu C zu Anpassung an die Bedürfnisse von java, nicht die andere Weise herum.
  • Das sollte wohl in allen C-code trotzdem für die Portabilität.
  • könnten Sie näher erläutern was Sie bedeuten? Vielleicht nach einer anderen Antwort? Ich habe keine Ahnung, was j-Typen sind. Mein Hauptproblem ist, dass ich eine C-Bibliothek zu verwenden, in meinem Java-code zu bauen, dieses Android-Programm. Bei den Arbeitgebern anfordern, ich bin eigentlich nicht ändern, den C-code, die Sie mir gegeben haben. Ich darf zum erstellen von wrapper-Funktionen, aber nicht ändern Sie die Funktionen, die Sie bereits geschrieben haben.
  • Lesen Sie einige der ndk docs und versuchen, einige der Beispiele, denken, schreiben-Wrapper entlang dieser Linien. Aber wenn der vorhandene code macht Annahmen über den Prozess Lebensdauer und der statischen Zustand in einen Konflikt mit der Android activity lifecycle und den Schwerpunkt auf Aktivitäten, anstatt procceses, kann es keine richtige Lösung innerhalb Ihrer Einschränkungen nicht zu ändern.

InformationsquelleAutor JuiCe | 2012-07-18
Schreibe einen Kommentar