Frage

I "m Planung meiner Daten in einem binären Format als Ressource zu speichern, es in einen int Puffer gelesen und es im Grunde gerade passiert auf eine native C ++ Funktion, die es auf eine Struktur / Klasse werfen könnte und die Arbeit mit ihm offensichtlich nur ints und schwimmt. Keine Zeiger.

Die Frage ist - was für Festsetzung up muss ich tun muss? Ich nehme an, dass ich ByteOrder.nativeOrder(), herauszufinden, überprüfen müssen, ob es Big Endian oder Little Endian ist, und führen Sie Byte-Swapping, wenn es sein muss.

Other than that, ist Schwimmer vermutlich garantiert in IEEE 754-Format zu erwarten? Gibt es noch andere Vorbehalte Ich bin hier völlig mit Blick?

(auch - da ich die Zusammenstellung des NDK mit, ich weiß, was Architektur es ohnehin schon ist (ARMv7-A, in meinem Fall), so kann ich die Endian-Spielereien technisch überspringt und nehmen Sie nur die Daten, die die Art und Weise ist es? )

War es hilfreich?

Lösung

unterstützt ARM sowohl große und kleinen Endian. Dies wird höchstwahrscheinlich durch das Betriebssystem so eingestellt sein, es könnte sich lohnen, während diese vorher heraus überprüfen.

Es gibt auch die Frage der Padding Wortgröße in einer Struktur:

struct st
{
  char a;
  int  b;
};

wird eine sizeof 8 und nicht die erwarteten 5 Byte. Dies ist so, dass der int wird Wort ausgerichtet ist. Im Allgemeinen align alles zu 4 Bytes und wahrscheinlich das gcc gepacktes Attribut (struct my_packed_struct __attribute__ ((__packed__)) ) als auch nutzen. Dadurch wird sichergestellt, dass die Einbauten der Struktur sind wie erwartet.

Alternativ können Sie den Android-Simulator verwenden, um die Datendatei für Sie zu erzeugen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top