Je binární reprezentace původních typů zaručena stejná na všechny cíle?

hlasů
3

I m plánování ukládat svá data v binárním formátu, jako zdroje, přečtěte si ji do int vyrovnávací paměti a v podstatě předat rovnou do nativního C ++ funkce, které by mohly být odevzdaných do struct / třídě a pracovat s ním. Žádné odkazy samozřejmě jen INT a plováky.

Otázkou je - jaký druh, kterým se musím udělat? Myslím, že musím zkontrolovat ByteOrder.nativeOrder(), zjistit, jestli je to velký endian nebo little endian, a provést byte-vyměňovat, pokud to bude nutné.

Jiné, než to, plováky jsou pravděpodobně zaručeno, že lze očekávat ve formátu IEEE 754? Existují nějaké další výhrady jsem úplně výhledem tady?

(I - protože jsem sestavování pomocí NDK, vím, co architektura je již (ARMv7-A, v mém případě), takže mohu technicky přeskočit endian vylomeniny a jen vzít datového jak to je?)

Položena 05/08/2010 v 05:16
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
3

ARM podporují jak velké a malé endian. To bude s největší pravděpodobností bude nastavena podle operačního systému, takže by to mohlo být stojí za kontrolu na to předem.

Tam je také otázka polstrování velikost slova v struct:

struct st
{
  char a;
  int  b;
};

bude mít sizeof8 a nikoli očekávaných 5 bajtů. Je tomu tak proto, že int bude sladěna slovo. Obecně sladit vše do 4 bajty, a pravděpodobně používat gcc zabalený attribute ( struct my_packed_struct __attribute__ ((__packed__)) ) stejně. Tím bude zajištěno, že vnitřní části struct jsou podle očekávání.

Alternativně použít Android Simulator generovat datový soubor pro vás.

Odpovězeno 05/08/2010 v 11:26
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more