Domanda

I "pianificazione m per memorizzare i miei dati in un formato binario come una risorsa, leggerlo in un buffer int e fondamentalmente passarlo verso il basso ad un nativo C ++ funzione, che potrebbe lanciare ad una struct / classe e lavorare con esso . Non ci sono puntatori, ovviamente, solo int e carri allegorici.

La domanda è - che tipo di fissaggio fino devo fare? Suppongo che ho bisogno di controllare ByteOrder.nativeOrder(), capire se si tratta di big endian o little endian, ed eseguire di byte-swapping in caso di necessità.

Oltre a questo, galleggianti sono presumibilmente garantiti da aspettarselo in formato IEEE 754? Ci sono altri avvertimenti Sono completamente affacciano qui?

(anche - dal momento che sto compilando utilizzando l'NDK, so ciò che l'architettura sia già (ARMv7-A, nel mio caso), in modo da posso tecnicamente saltare gli imbrogli endian e basta prendere i dati così com'è? )

È stato utile?

Soluzione

braccio di supporto sia grande e little endian. Questo sarà molto probabilmente essere impostato dal sistema operativo quindi potrebbe essere la pena di controllare questo fuori in anticipo.

C'è anche la questione di imbottitura a misura parola in una struttura:

struct st
{
  char a;
  int  b;
};

avrà un sizeof 8 e non gli attesi 5 byte. Questo è così che l'int verrà parola allineato. Generalmente align tutto a 4 byte e, probabilmente, utilizzare l'attributo imballato gcc (struct my_packed_struct __attribute__ ((__packed__)) ) pure. Questo farà sì che la struttura interna di struct sono come ci si aspetta.

In alternativa, utilizzare il simulatore di Android per generare il file di dati per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top