sto provando a leggere il contenuto del file PNG.come trasmettere un array di caratteri in un singolo numero intero?
Come forse saprai, tutti i dati sono scritti in un modo a 4 byte in file png, sia di testo che di numeri. quindi se abbiamo il numero 35234 viene salvato in questo modo: [1000] [1001] [1010] [0010].
ma a volte i numeri sono più brevi, quindi i primi byte sono zero, e quando leggo l'array e lo getto da char * a numero intero ottengo il numero sbagliato. per esempio [0000] [0000] [0001] [1011] a volte i numeri vengono erroneamente interpretati come numeri negativi e in pratica lo zero!
Lasciate che vi faccia un esempio intuitivo:
char s_num[4] = {120, 80, 40, 1};
int t_num = 0;
t_num = int(s_num);
Vorrei poter spiegare bene il mio problema!
Come posso trasmettere tali array in un singolo valore intero?
ok ok ok, mi permetta di cambiare il mio codice per spiegare meglio:
char s_num[4] = {0, 0, 0, 13};
int t_num;
t_num = *((int*) s_num);
cout << "t_num: " << t_num << endl;
qui dobbiamo ottenere 13 come il risultato, ok? ma di nuovo con questa nuova soluzione la risposta è sbagliata, puoi testare sui tuoi computer! ottengo questo numero: 218103808 che è decisamente sbagliato!
La macchina è big-endian o little-endian .... leggere questo: http://en.wikipedia.org/wiki/Endianness#Big-endian – Nawaz
Come si cast in base? inserisci del codice .. – Nawaz
[1000] [1001] [1010] [0010] è due byte, non quattro. – TonyK