PDA

Visualizza la versione completa : [C/C++]: Applicare maschera a bit contenuti in file


valer_85
17-08-2006, 17:37
non riesco a capire cos' una maschera in C...
praticamente io dovrei manipolare un certo file usando come maschera certi byte contenuti in un altro file... una piccola delucidazione? :zizi:
grazie

Samuele_70
17-08-2006, 18:38
Alcuni link, trovati con la funzione 'cerca' :unz: di questo forum :
Esempio 1 (http://forum.html.it/forum/showthread.php?s=&threadid=999017&highlight=maschera)
Esempio 2 (http://forum.html.it/forum/showthread.php?s=&threadid=972186&highlight=maschera)

valer_85
17-08-2006, 19:06
le avevo viste ankio ma nn mi sembra una gran spiegazione...

andbin
17-08-2006, 19:14
Originariamente inviato da valer_85
non riesco a capire cos' una maschera in C...
praticamente io dovrei manipolare un certo file usando come maschera certi byte contenuti in un altro file... una piccola delucidazione? :zizi:
grazie Se intendi l'operazione di "mascheratura dei bit", una banale operazione di AND che consente di ottenere un nuovo valore che contiene solamente certi bit del valore iniziale.

Esempio:

int a = 0x4F; /* 01001111 */
int mask = 0x61; /* 01100001 */
int r;

r = a & mask; /* r = 01000001 (0x41) */

valer_85
17-08-2006, 19:20
credo di aver capito... nel mio caso x devo usare lo xor, xk l'esercizio dice di modificare il file usando una trasformazione xor, usando come maschera i byte contenuti in un file di maschera...
quindi invece dell'and devo usare lo xor?
grazie

valer_85
18-08-2006, 10:47
up

andbin
18-08-2006, 11:55
Originariamente inviato da valer_85
credo di aver capito... nel mio caso x devo usare lo xor, xk l'esercizio dice di modificare il file usando una trasformazione xor, usando come maschera i byte contenuti in un file di maschera...
quindi invece dell'and devo usare lo xor?
grazie L'operazione di XOR serve in genere per invertire selettivamente solo certi bit di un valore. Esempio:

int a = 0x45; /* 01000101 */
int mask = 0x0F; /* 00001111 --> inverte i bit 3-0 */
int r;

r = a ^ mask; /* r = 01001010 (0x4A) */

valer_85
18-08-2006, 13:14
ke casino :confused:

ecco la signature dell'esercizio

provamaschera principale maschera finale

quindi senti se giusto il mio ragionamento:
- vedo di quanti byte il file di mask ( per esempio n ), e quindi la trasformazione del file "principale" dev'essere fatta a blocchi di n byte.
- per ogni blocco faccio lo xor byte x byte tra file principale e maskera
- scrivo quel ke viene in un altro file "finale"

giusto? :confused: :confused: :confused:

valer_85
19-08-2006, 11:01
up

valer_85
20-08-2006, 12:11
up

Loading