Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Originariamente inviato da oregon
    La cosa principale che non hai spiegato è : perchè big-endian ... ??
    beh...perchè no? non mi cambia molto tra big-endian e little-endian
    Alla batteria dai retta ballA

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da gianvituzzi
    beh...perchè no? non mi cambia molto tra big-endian e little-endian
    Ma scusa ... mi sento un po' rimbecillito ... tu puoi salvare semplicemente il contenuto della memoria senza dovere agire sull'ordine dei byte e, invece, ti e ci complichi la vita con una marea di codice che in realtà non ti serve ??

    Avremmo risolto una decina di post fa se ci avessi detto che l'ordine dei byte non importava ... t'avrei detto semplicemente di fare una

    write

    e una

    read

    indicando l'indirizzo della struttura e la sua lunghezza, senza altre operazioni ...!
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Be'... di solito se devi scrivere dati binari usi il formato nativo della tua piattaforma, che, nel caso dell'architettura Intel, è little-endian, per motivi di comodità e di performance (non devi riordinare i byte). Per scrivere il valore di una variabile in binario con endiannes nativa infatti ti basta fare:
    codice:
    stream.write((char *)&variabile,sizeof(variabile));
    , e per rileggerlo basta fare:
    codice:
    stream.read((char *)&variabile,sizeof(variabile));
    mentre per scriverlo/leggerlo con byte ordering opposto devi scambiarne i byte prima di scriverlo/dopo averlo letto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #14
    Originariamente inviato da MItaly
    Be'... di solito se devi scrivere dati binari usi il formato nativo della tua piattaforma, che, nel caso dell'architettura Intel, è little-endian, per motivi di comodità e di performance (non devi riordinare i byte). Per scrivere il valore di una variabile in binario con endiannes nativa infatti ti basta fare:
    codice:
    stream.write((char *)&variabile,sizeof(variabile));
    , e per rileggerlo basta fare:
    codice:
    stream.read((char *)&variabile,sizeof(variabile));
    mentre per scriverlo/leggerlo con byte ordering opposto devi scambiarne i byte prima di scriverlo/dopo averlo letto.
    oh, ca**o...
    Alla batteria dai retta ballA

  5. #15
    veramente mea culpa! se avessi saputo che era così facile...

    Codice PHP:
    int _tmain()
    {
        {
            
    int num1 10;
            
    int num2 6553500;
            
    char buff[256] = _T("Hello World!");
            
    char text[512] = _T("How are you?");

            
    std::ofstream hfile;
            
    hfile.open(szFilestd::ios::out|std::ios::binary);
            if(
    hfile.bad())
                return -
    1;

            
    hfile.write( (char *)&num1sizeof(num1) );
            
    hfile.write( (char *)&num2sizeof(num2) );
            
    hfile.write( (char *)&buffsizeof(buff) );
            
    hfile.write( (char *)&textsizeof(text) );

            
    hfile.close();
        }

        {
            
    int num1 0;
            
    int num2 0;
            
    char buff[256] = {0};
            
    char text[512] = {0};

            
    std::ifstream hfile;
            
    hfile.open(szFilestd::ios::in|std::ios::binary);
            if(
    hfile.bad())
                return -
    1;

            
    hfile.read( (char *)&num1sizeof(num1) );
            
    hfile.read( (char *)&num2sizeof(num2) );
            
    hfile.read( (char *)&buffsizeof(buff) );
            
    hfile.read( (char *)&textsizeof(text) );

            
    hfile.close();

            
    std::cout << num1 << std::endl;
            
    std::cout << num2 << std::endl;
            
    std::cout << buff << std::endl;
            
    std::cout << text << std::endl;
        }

        
    system("pause");
        return 
    EXIT_SUCCESS;

    Alla batteria dai retta ballA

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da gianvituzzi
    veramente mea culpa! se avessi saputo che era così facile...
    Probabilmente, quando ti chiedevo

    mi chiarisci un attimo perchè stai facendo tutte queste operazioni

    e quando shodan e io ti chiedevamo il

    perchè dell'ordine dei byte

    c'era un motivo ...

    Se solo avessi risposto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.