Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Con il vettore di char e la memcpy puoi operare ma la union e' l'approccio corretto ...
    Non capisco perche' tu non voglia usarla ... se non sei a tuo agio perche' non la conosci, studiala un momento ... non e' un argomento complesso e penso dovrebbe rientrare tra le conoscenze di chi programma in C e affronta esami di Programmazione 2 ...

    Se la conversione avviene correttamente, quando eseguita due volte sugli stessi dati, deve restituire i dati di partenza. Ma piu' di questo non puoi fare ...

  2. #12
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    GRAZIE


    userò il tuo codice !!! E farò un po di esercizi su queste union.

    Intanto Grazie Ancora

  3. #13
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Dopo la 1a coniversione

    Dunque..
    Premettendo che ho capito come funziona la tua union, e l'ho anche utilizzata, il programma si comporta nel seguente modo:

    fase 1)
    Converto il valore 123.0000
    Il valore convertito è 0.00000 (Qualsiasi valore io converta mi da come risultato ttt zeri)

    fase 2)
    Converto il valore 0.00000
    Il valore convertito è 123.0000

    Quindi effettivamente mi ritorna alle origni per cui dovrebbe funzionare bene... ma il fatto che qualsiasi valore io converta mi da tutti zeri è normale ?!?

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Allora ... sin dall'inizio ti ho fatto un certo discorso ma forse non sono stato chiaro ... ci tento nuovamente in un altro modo ...

    Se hai un sistema in cui l'ordine usato e' il Little Endian (come nel caso di un qualsiasi PC x86 ...), il valore double viene interpretato in maniera corretta. Nel caso di 123.0f la sequenza di byte dovrebbe essere

    00 00 00 00 00 C0 5E 40

    Quando li inverti, diventano

    40 5E C0 00 00 00 00 00

    ma il programma continua ad identificarli come se fossero Little Endian.

    Fare valutazioni su tale valore, e' quindi assolutamente inutile, in quanto stai scambiando parti della mantissa con l'esponente ...

  5. #15
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    Lo so, fare valutazioni nn si può perchè nn possiamo sapere il valore che verrà fuori.
    però dopo la conversione se mi da 0 io lo penso come

    00 00 00 00 00 00

    Che nn dovrebbe andar bene, mi dovrebbe invece dare un valore a cacchio, indefinito, ma non 0 !!

    P.S
    Lo so sono un pò :

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    No !

    Dopo la conversione, non ha piu' senso alcuna interpretazione del numero!

    Data una sequenza di lettere come

    C I A O

    se la interpreti in italiano, assume un senso.

    Se inverti le lettere

    O A I C

    e continui ad interpretarle in italiano, non hanno piu' un senso!

  7. #17
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Problema risolto

    Ti ringrazio per le tue delucidazioni, ho la prova che funziona, sia con la union che con il vettore (alla fine ho usato la union veniva + compatto in meno righe ) , avrei un altra domandina sul tema da farti:

    Devo prelevare da un file uno short che è stato memorizzato in Network Byte Order, da una macchina potenzialmente sconosciuta posso farlo tranquillamente con

    fread(&valore,sizeof(short),1,FILE) ;

    O devo (come penso) fare qualche verifica affinche la macchina che legge (la mia) lo riceva nell'ordine giusto ?!?

    TNX

  8. #18
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La fread leggera' il valore e i byte saranno nell'ordine inverso.

    Con la ntohs li metti a posto ... qual e' il problema ... ?

  9. #19
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    Premetto che sicuramente hai ragione te, ma vorrei capirci qualcosa in + xkè ieri ci eravamo detti che non posso sapere l'ordine con il quale la mia macchina legge i byte, come fai a dire di convertirlo in host ? Allora mi verrebbe da pensare che le macchine sono standardizzate in host!! Nn ci sto capendo niente VVoVe:

  10. #20
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Avevi scritto

    Originariamente inviato da giudf
    Devo prelevare da un file uno short che è stato memorizzato in Network Byte Order
    e allora, quando chiedi

    Originariamente inviato da giudf
    non posso sapere l'ordine con il quale la mia macchina legge i byte, come fai a dire di convertirlo in host ?
    tu sai in che ordine stanno i dati di partenza ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.