Ospite ntia89 Inviato 14 Settembre 2007 Segnala Condividi Inviato 14 Settembre 2007 ciao, sto cercando un comando di qualsiasi linguaggio (c++, basic, ecc.) che: mi mostri i bit (0 o 1) d un file..... grazie e Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 14 Settembre 2007 Segnala Condividi Inviato 14 Settembre 2007 In che senso i "bit" di un file? Vuoi visualizzare il contenuto di un file in codice binario o i valori in bit dei flags del file? Nel primo caso non penso ci sia un comando apposito (anche se non dovrebbe essere molto difficile da programmare), ma penso che sia una cosa impensabile anche con file non troppo grandi. Considera che 1Byte=8bit, quindi un file di soli 500 KB arriverebbe a dover mostrare sui 4 MB di caratteri. Ma a cosa ti serve di preciso? Magari si può trovare un'altra soluzione. Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite ntia89 Inviato 14 Settembre 2007 Segnala Condividi Inviato 14 Settembre 2007 intendo proprio quello.... che mi visualizzi, o salvi i bit che per esempio compongono i caratteri in ASCII di un file di testo...... oppure se tu hai qualche idea per costruire un programmino.... ti ascolto... Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 14 Settembre 2007 Segnala Condividi Inviato 14 Settembre 2007 Ciao! Ho buttato giù due righe di codice. Non fa proprio quello che chiedi, ma è una prova, e per il momento spero ti possa andar bene. In pratica accetta una stringa come argomento (quindi se contiene spazi va racchiusa fra virgolette) e stampa ogni carattere con il relativo codice binario. Naturalmente puoi modificarlo per adattarlo alle tue esigenze... (magari poi posta le modifiche ) #include <stdio.h> #include <string.h> void binaryByte(char aByte, char *bitString); int main(int argc, const char * argv[]) { if(argc<=1) { printf("L'applicazione richiede una stringa come argomento.\n"); return 0; } unsigned int c, i; c = strlen(argv[1]); for(i=0; i < c; i++) { char currentChar[9]; binaryByte(argv[1][i], currentChar); printf("%c: %s\n", argv[1][i], currentChar); } return 0; } void binaryByte(char aByte, char *bitString) { unsigned short n; for(n=0; n<8; n++) { bitString[n]=(aByte & (1 << 7-n)) ? '1' : '0'; } bitString[8]='\0'; return; } Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite ntia89 Inviato 15 Settembre 2007 Segnala Condividi Inviato 15 Settembre 2007 OK GRAZIE MILLE ora lo provo Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite ntia89 Inviato 15 Settembre 2007 Segnala Condividi Inviato 15 Settembre 2007 mi spieghi questo passaggio: char currentChar[9]; binaryByte(argv[1], currentChar); printf("%c: %s\n", argv[1], currentChar); e questo: unsigned short n; for(n=0; n<8; n++) { bitString[n]=(aByte & (1 << 7-n)) ? '1' : '0'; } bitString[8]='\0'; grazie ciao Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 15 Settembre 2007 Segnala Condividi Inviato 15 Settembre 2007 OK, ci provo. [i]// dichiaro la variabile currentChar, che è un array di 9 elementi di tipo char[/i] char currentChar[9]; [i]// chiamo la funzione binaryByte() e gli passo come argomenti il carattere [u]i[/u] del primo argomento del programma stesso (la stringa) e la variabile currentChar[/i] binaryByte(argv[1][i], currentChar); [i]// stampo il carattere [u]i[/u] e la stringa currentChar[/i] printf("%c: %s\n", argv[1][i], currentChar); [i]// dichiaro la variabile n che mi servirà per il ciclo for[/i] unsigned short n; [i]// eseguo un ciclo for 8 volte[/i] for(n=0; n<8; n++) { [i]// assegno all'elemento [u]n[/u] dell'array bitString il carattere '1' se il bit alla posizione [u]n[/u] (da sinistra) di aByte è 1 o '0' se il bit è 0[/i] bitString[n]=(aByte & (1 << 7-n)) ? '1' : '0'; } [i]// assegno all'ultimo elemento (il nono) dell'array bitString il caratter [u]null[/u], così da trasformare l'array in una stringa[/i] bitString[8]='\0'; Spero di essere stato chiaro. Ma ti è servito a qualcosa? Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite ntia89 Inviato 15 Settembre 2007 Segnala Condividi Inviato 15 Settembre 2007 si... ho capito che sarà un duro lavoro.... Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite ntia89 Inviato 15 Settembre 2007 Segnala Condividi Inviato 15 Settembre 2007 nn capisco cosa sono i % visto che io ho sempre usato i cout...... printf("%c: %s\n", argv[1], currentChar); scusa la mia ignoranza...... Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 16 Settembre 2007 Segnala Condividi Inviato 16 Settembre 2007 nn capisco cosa sono i % visto che io ho sempre usato i cout......printf("%c: %s\n", argv[1], currentChar); scusa la mia ignoranza...... Ciao! Scusa la mia ignoranza, ma cout non è in C++? Il codice che ho usato io è scritto in C. E la funzione che uso per stampare è printf(). printf() accetta come argomenti una stringa nella quale è possibile inserire dei marcatori, ed eventualmente le variabili, separate da virgola, che andranno inserite al posto dei marcatori. I marcatori sono rappresentati dal simbolo % e seguiti da un carattere che indica il tipo di variabile da stampare. Nello specifico il caratere c serve a far stampare una variabile di tipo char, mentre la s una stringa. La cosa poi è più complicata, perché ad esempio per stampare un numero puoi indicare quante cifre andranno stampate prima della virgola e quante dopo, ma non è il caso che te lo spieghi io adesso. Se ti interessa, invece, ti consiglio di dare un'occhiata ai seguenti link, ci sono delle ottime risorse per imparare a programmare per MacOS X: MaCocoa e Marco Coisson. Ma tu comunque l'hai provato il codice? Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
Ospite ntia89 Inviato 16 Settembre 2007 Segnala Condividi Inviato 16 Settembre 2007 si ll'ho provato e credo sia giusto..... cmq hai ragione cout è del c++ e + semplice da usare... grazie per i link ciao Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.