.[ ČeskéHry.cz ].
Korektni ulozeni FPU datovych typu do souboru

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 24. srpen 2008, 20:31:53    Předmět: Korektni ulozeni FPU datovych typu do souboru Odpovědět s citátem

Zdravim,
jak spravne ulozit datove typu FPU(v C reprezentovane jako float a double), aby bylo mozne je nacist na vsech platformach, tedy napriklad x86, PowerPC, ARM, Motorola, ... U ALU typu je to jednoduche prehozeni endianu, ale pro FPU jsem nenasel zadne reseni.

Na wiki je napsane:
citace:
Floating-point and endianness

On some machines, while integers were represented in little-endian form, floating-point numbers were represented in big-endian form. [3] Because there are many floating formats, and a lack of a standard "network" representation, no standard for transferring floating point values has been made. This means that floating point data written on one machine may not be readable on another, and this is the case even if both use IEEE 754 floating point arithmetic since the endian-ness of the memory representation is not part of the IEEE specification.


Resil nekdo nejak tento problem?
Dik.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
ladik-BigBoss



Založen: 28. 07. 2007
Příspěvky: 162

PříspěvekZaslal: 24. srpen 2008, 21:20:00    Předmět: Odpovědět s citátem

v pripade ze potrebujes podporu takoveho mnozstvi platforem bych asi pouzil ascii reprezentaci cisel a pak je zpakoval treba pres zlib. neni to zrovna nejrychlejsi reseni, ale je obecne
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 24. srpen 2008, 21:35:08    Předmět: Odpovědět s citátem

Bity musíš přehodit bez ohledu na datový typ. Zrovna jsem si to ověřil tak, že jsem si zkusil přenést a načíst soubor ze školního IRIX64 u sebe.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Matasx



Založen: 17. 08. 2008
Příspěvky: 258

PříspěvekZaslal: 25. srpen 2008, 07:40:21    Předmět: Odpovědět s citátem

Dělal jsem to jednou a použil jsem uložení jako ASCII, v C# mi tím pak vznikl krásný problém, na který sem přišel až za 2 měsíce a opravoval jsem ho asi den. Jde o to, že v každý jazykový kultuře se zapisuje jinak. Např. en-US používá čárky na oddělení tisíců: 1,234.01 , kdežto cs-CZ klasicky 1234.01. Kompletní seznam zde: http://msdn.microsoft.com/en-us/library/system.single.parse(VS.71).aspx . Nevím jak moc se tento problém týka jazyka ve kterém budeš psát ty.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 25. srpen 2008, 07:57:48    Předmět: Odpovědět s citátem

Mozna by mohlo pomoct tohle:
kód:
// If a swapped float passes through the fpu, the bytes may get changed.
// Prevent this by swapping floats as DWORDs.
#define SafeSwapFloat( pOut, pIn )   (*((uint*)pOut) = DWordSwap( *((uint*)pIn) ))

je to z kodu HL2 takze by to mnelo fungovat na PC a XBOXu
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 25. srpen 2008, 08:00:30    Předmět: Odpovědět s citátem

Matasx napsal:
Dělal jsem to jednou a použil jsem uložení jako ASCII, v C# mi tím pak vznikl krásný problém, na který sem přišel až za 2 měsíce a opravoval jsem ho asi den. Jde o to, že v každý jazykový kultuře se zapisuje jinak. Např. en-US používá čárky na oddělení tisíců: 1,234.01 , kdežto cs-CZ klasicky 1234.01. Kompletní seznam zde: http://msdn.microsoft.com/en-us/library/system.single.parse(VS.71).aspx . Nevím jak moc se tento problém týka jazyka ve kterém budeš psát ty.


to mas z toho ze nectes manual - pro zapis do souboru/streamu a prenos cisel, datumu, ... se pouziva tzv. univerzalni jazykova kultura - CultureInfo.Invariant - dava se jako IFormatProvider parametr metod jako ToString() nebo String.Format() - pak neni zadny problem pri prenosu
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Matasx



Založen: 17. 08. 2008
Příspěvky: 258

PříspěvekZaslal: 25. srpen 2008, 08:09:18    Předmět: Odpovědět s citátem

No jo, co na to říct? Teď už to vim Laughing Taky člověk nemůže vědět všechno a chybička se hold vloudí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
majkl



Založen: 28. 08. 2007
Příspěvky: 4

PříspěvekZaslal: 30. srpen 2008, 08:22:43    Předmět: Odpovědět s citátem

Eosie napsal:
Bity musíš přehodit bez ohledu na datový typ. Zrovna jsem si to ověřil tak, že jsem si zkusil přenést a načíst soubor ze školního IRIX64 u sebe.


mno z vyse uvedene citace z wiki vyplyva, ze ne pokazde to bude treba prehodit - ruzne platformy to muzou pouzivat jinak.
Asi bych to fakt udelal tak jak rika ladik. V textovem formatu je to nejlepsi.

Co se tyce cecka - tak problem s mezinatodnima formatama obejdes pomoci fce locale() a imbue() .. jak to pouzit je kdekoli na netu.

Akorat pozn. davej bacha, kdybys chtel pouzivat unicode - funguje to nak dost divne. (resp. utf-16/32 ma problem - proste typ wchar neni poradne vyreseny(teda jeho spoluprace se streamama)).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna