const unsigned char* p;
int64_t u = ...; // ??
Qual è il modo consigliato di leggere un intero binario little endian a 64 bit dagli 8 byte puntati da p? Su x64 dovrebbe essere eseguita un'istruzione a macchina singola, ma sono necessari swap hardware di big-endian. Come si fa a farlo in modo ottimale e portabile?Leggere gli interi binari
La soluzione di Carl è buona, abbastanza portatile ma non ottimale. Questo solleva la domanda: perché C/C++ non fornisce un modo migliore e standardizzato per farlo? Non è un costrutto insolito.
'int64_t' non è portatile. Ho la sensazione che anche la soluzione più portabile dovrà fare alcune ipotesi (come big e little-endian sono le uniche possibilità). –
'int64_t' è standard C++ 11. Presume che il tipo sia disponibile però. – XTF
@XTF Esattamente, questo è ciò che intendo. Se il tipo è disponibile come opzione, non è portatile. È solo portatile tra quei sistemi che hanno un tipo a 64 bit. –