Conversion de type de C à Java

J’ai fait de mon mieux pour Google, mais je n’ai pas pu trouver de réponse claire sous la forme d’un tableau qui montre les conversions de types.

La raison pour laquelle je voudrais convertir ces types, c’est parce que j’utilise le NDK Android pour appeler des fonctions à partir de code natif. Le problème est que le code natif appelle différents types qui n’existent pas en Java.

En fait, je n’ai aucune expérience en C et j’ai trouvé ces quelques types en regardant rapidement le code. N’hésitez pas à éditer ce message pour append différents types à convertir.

From C to Java long -> short -> char -> unsigned long -> unsigned short -> unsigned char -> byte -> Int8 -> Int16 -> Int32 -> UInt8 -> UInt16 -> UInt32 -> 

De même, si l’un d’entre eux ne peut pas convertir en type Java, veuillez expliquer pourquoi.

Telles sont les équivalences, en gardant à l’esprit que la taille d’un type de données primitif en Java est toujours la même, alors que la taille d’un type de données en C dépend dans une certaine mesure du compilateur et de l’architecture, comme indiqué par @millimoose dans commentaires.

Sachez également que le type de données char est défini comme “la plus petite unité adressable de la machine pouvant contenir un jeu de caractères de base. Il s’agit d’un type entier. Le type réel peut être signé ou non signé en fonction de l’implémentation”, alors qu’en Java, caractère Unicode 16 bits unique.

 long -> long short -> short char -> char unsigned long -> N/A unsigned short -> N/A unsigned char -> N/A byte -> byte Int8 -> byte Int16 -> short Int32 -> int UInt8 -> N/A UInt16 -> N/A UInt32 -> N/A 

En Java, il n’existe aucun type de données primitif non signé. Le type d’ byte utilise 8 bits, int 32 bits, 16 bits short et 64 bits long .

Voici un lien vers la section correspondante du didacticiel Java et une explication plus détaillée dans la section §4.2 de la spécification du langage Java .

vous devez importer la classe

Classe UInt32

java.lang.Object

Et puis, vous pouvez utiliser simplement Uint32 et Uint16