Ho un file binario che verrà letto come caratteri. Ogni personaggio è stato spostato un po 'verso sinistra, un numero imprecisato di volte (assumendo con un involucro) da qualcun altro. Voglio essere in grado di leggere in ogni personaggio e poi avvolgere il turno a destra (il numero di volte per lo spostamento immagino che dovrà essere calcolato manualmente, perché non ho capito un altro modo).Bit che sposta un personaggio con un wrap? C++
Quindi, la mia idea attuale è che ho letto in un personaggio, creare una copia con temp e quindi utilizzare XOR:
char letter; //will hold the read in letter
char temp; //will hold a copy of the letter
while(file.read(&letter, sizeof(letter)) //letter now holds 00001101
{
temp = letter; //temp now holds 00001101
letter >>= 1; //shift 1 position to the right, letter now holds 00000110
temp <<= 7; //shift to the left by (8-1), which is 7, temp now holds 10000000
letter ^= temp; //use XOR to get the wrap, letter now holds 10000110
cout << letter;
}
questo ha un senso nella mia testa esausto, ma non funziona .. e non riesco a capire perché. La dimensione del char è di 1 byte, quindi ho capito che devo solo scherzare con 8 bit.
Qualsiasi aiuto sarebbe apprezzato.
MODIFICA: risolto. Grazie mille a tutti. Ama questa comunità fino alla morte, voi ragazzi siete fantastici!
You' ci ha detto cosa ti aspetti - cosa ottieni? –
@sftrabbit Un pasticcio dall'aspetto criptico. –
Stai leggendo 'letter' due volte per ciclo, scartando il valore di prima lettura – jthill