Question

I "m planification pour stocker mes données dans un format binaire comme une ressource, lire dans un tampon int et fondamentalement passer directement vers le bas à une fonction C ++ natif, ce qui pourrait jeter un struct / classe et travailler avec elle . Pas de pointeurs, évidemment, seulement ints et chars.

La question est - quel type de fixation jusqu'à ce que je dois faire? Je suppose que je dois vérifier ByteOrder.nativeOrder(), savoir s'il est grand endian ou little endian, et intervertir les octets le cas échéant.

Autre que, flotteurs sont vraisemblablement garantis à prévoir au format IEEE 754? Y at-il d'autres mises en garde, je suis complètement donnant ici?

(également - puisque je compiler en utilisant le NDK, je sais ce que l'architecture est déjà (ARMv7-A, dans mon cas), donc je peux sauter techniquement les manigances endian et juste prendre les données comme il est? )

Était-ce utile?

La solution

Prise en charge ARM grands et petit-boutiste. Ce sera très probablement être réglé par le système d'exploitation de sorte qu'il pourrait être utile de vérifier ceci au préalable.

Il y a aussi la question de rembourrage à la taille de mot dans un struct:

struct st
{
  char a;
  int  b;
};

aura un sizeof 8 et non attendus 5 octets. Il en est ainsi que l'int sera aligné mot. En général, tout à aligner 4 octets et probablement utiliser aussi bien l'attribut gcc calfeutrée (struct my_packed_struct __attribute__ ((__packed__)) ). Cela permettra d'assurer que les entrailles de la struct sont comme prévu.

Vous pouvez également utiliser le simulateur Android pour générer le fichier de données pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top