Comment puis-je déclarer un tableau de uint8_t en Java

conryyy:

J'ai une fonction C ++ dans ma DLL qui a besoin d'un tableau de uint8_t comme entrée des paramètres, de sorte que le tableau ressemble à quelque chose comme ça:

uint8_t input[input_length] = { 0x30, 0x41, 0x80, 0x8A...}; 

Je veux utiliser cette fonction en Java avec la JNA, ce qui signifie que je dois creat un tableau uint8_t en Java. Ma première approche a consisté à créer un tableau d'octets comme:

byte[] input = { 0x30, 0x41, 0x80, 0x8A...}; 

Mais je me suis aperçu qu'une variable uint8_t en C ++ a une portée de 0..255, mais une variable d'octets Java a une portée de -128..127, et comme vous pouvez voir ce tableau contient des valeurs qui sont plus de 127 (comme 0x8A), ce qui signifie que ma déclaration Java ici est pas valide. Donc, ma question est quel type Java est équivalent à uint8_t?

rustyx:

Java ne dispose pas de types non signés. Mais ce n'est pas un gros problème, car le débordement signé en Java est défini comme complément à deux, vous pouvez simplement passer le byteà l' endroit où la JNA attend uint8_t. Il est seulement un peu gênant de travailler avec:

byte[] input = { 0x30, 0x41, (byte)0x80, (byte)0x8A...};

Pour lire en uint8_tarrière , vous feriez (x & 0xFF)pour enlever l'extension de signe et de travail avec le résultat comme int.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=183482&siteId=1
conseillé
Classement