PDA

Visualizza la versione completa : [C/C++/assembly] valori binari


AnĒkin
22-07-2003, 02:16
Salve a tutti.
Allora, io devo aprire un'immagine, anzi diciamo un file dove l'informazione che mi serve č lunga un byte. Allora ho deciso, dopo aver aperto il file con fopen (nomeFile,"rb"); di usare fgetc() per ottenere un char di lunghezza un byte. A questo punto perō mi blocco, nel senso che devo ottenere il valore numerico del mio byte. Ho provato facendo un cast esplicito, da char a float, ma mi restituisce sempre -1.
Non so che fare, ho pensato che forse (non so per quale motivo) devo leggere i bit da destra verso sinistra, quindi dovrei rovesciare il byte. (mi danno poche info quindi devo arrangiarmi :( ) .

Solo che di assembly non ci azecco molto. Qualcuno puō indicarmi la rotta?
Grazie Mille

kentaromiura
22-07-2003, 08:48
stai lavorando in c, quindi se il char contiene gia' il tuo dato,
ci puoi lavorare sopra come fosse un integer;
con printf("%d",dato); puoi stampare il valore contenuto all'interno
che sara' da 0 a 255.

AnĒkin
22-07-2003, 10:22
Pensavo anch'io, ma come dicevo il valore che mi viene restituito č sempre -1, e non capisco come mai.

kentaromiura
22-07-2003, 10:24
-1 e' lo stato d' errore, evidentemente sbagli qualcosa nell fgetc()

kentaromiura
22-07-2003, 10:41
ma tu fai una cosa del tipo:



int a;
FILE *pippo;
pippo=fopen("nomefile","r");
a=fgetc(pippo);
printf("%d",a);



???

AnĒkin
22-07-2003, 10:47
faccio una cosa di questo tipo:
apro in binario,

int a;
FILE *pippo;
pippo=fopen("nomefile","rb");
a=fgetc(pippo);
printf("%d",a);

Cmq proprio adesso stavo provando ad usare fread() che mi restituisce un valore negativo , ma diverso da -1. (adesso mi da -52)

kentaromiura
22-07-2003, 10:55
prova ad non aprirlo in binario e ti dovrebbe funzionare..

AnĒkin
22-07-2003, 11:08
grrr, non cambia nulla, mi restituisce sempre -52.

kentaromiura
22-07-2003, 11:39
Originariamente inviato da AnĒkin
faccio una cosa di questo tipo:
apro in binario,

int a;
FILE *pippo;
pippo=fopen("nomefile","rb");
a=fgetc(pippo);
printf("%d",a);

Cmq proprio adesso stavo provando ad usare fread() che mi restituisce un valore negativo , ma diverso da -1. (adesso mi da -52)

la fread la fai cosi' vero :
fread(&a,1,1,pippo);

AnĒkin
22-07-2003, 14:47
Azz, risolto! in realtā io dichiaravo una variabile
char ch;
int/float h;
e scrivevo
h = (int/float)ch;

Solo che dovevo dichiarare ch come unsigned char !!!!!

Grazie cmq CIaoo

Loading