Vai al contenuto

Programmazione....


Ospite ntia89

Messaggi raccomandati

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. :rolleyes:

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

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...:rolleyes:

Link al commento
Condividi su altri siti

Ciao! :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 :ciao: )

#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

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

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. :DD

Ma ti è servito a qualcosa? :ghghgh:

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

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! :DD

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? :rolleyes:

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

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...