No ... stai ragionando in binario puro (come se fosse un intero). Un double e' in un formato particolare standardizzato, formato da mantissa ed esponente (IEEE standard, leggi http://www.psc.edu/general/software/...ieee/ieee.html) e quindi e' difficile ragionare nel modo che indichi. Era quello che ti volevo dire sin dall'inizio ...Originariamente inviato da giudf
1)Come la testo la tua funzioncina?
Io l'avevo pensata così, correggimi se sbaglio:
Dunque quello che faccio è invertire l'ordine dey byte quindi se un 2 in binario è rappresentato da 00000010 con la conversione dovrà essere 01000000 e dovrà darmi il numero corrispondente sbaglio?
L'unico modo di testare la funzione e' sapere quale era il valore double in arrivo e quale e' quello dopo l'inversione nel tuo sistema.
Per fare questo confronto *devi* sapere quali sono i valori che ti arrivano *prima* di essere invertiti ...
Il formato su 8 byte occupa 64 bit. Questo anche su macchine a 32.Originariamente inviato da giudf
2)Ho pensato anche al fatto che quell'8 sul tuo codice non è portabile, perchè non so a priori l'architettura della macchina al quale devo mandarla (e se non sbaglio il double cambia di dimensioni da 32 bit a 64 bit) quindi lo sostituirò con un sizeof(double) a questo punto però posso sostituire il 7-i con un ((sizeof(double)-1)-i) ? Penso il compilatore la accetti un espressione del genere!
Ripeto ancora ... dipende dal formato del valore double che utilizzi.
Utilizzando il sizeof il programma considera *sempre* la dimensioni dei double nel sistema in cui viene eseguito ma non prende in considerazione quelle del valore che gli arriva dall'esterno ... perche' non puo' sapere se il valore gli arriva da una macchina in cui il formato del double, sebbene in ordine inverso, sia di dimensioni e/o formato diversi ...
Questo l'ho capito ... Il problema maggiore di questa discussione e' che tu *non hai ancora detto* da dove ti arrivano questi valori. E se conosci da dove ti arrivano sai anche in quale formato sono ...Originariamente inviato da giudf
P.S Magari non sono stato molto chiaro, ma mettendo il double su file, l'ordine dei byte diventa molto importante perchè quando lo vado a leggere deve essere in Network Byte Order.
E' un segreto? Che programma stai scrivendo?![]()
Quello dipende *unicamente* dalla CPU. Se, come penso, la tua macchina utilizza una INTEL x86, allora utilizzi il "little-endian byte order".Originariamente inviato da giudf
Detto ciò mi viene in mente un altra domanda, c'è il modo per sapere che tipo di ordinamento fà la mia macchina?

Rispondi quotando