honny
01-10-2004, 10:43
ho qualche piccolo dubbio su codifica / decodifica di stringhe in c.
al momento da una stringa codificata riesco a ricavare la stringa originale .
Ma nel fare i passi inversi mi blocco .
da stringa codificata a stringa in chiaro :
for( i=0; i<lunghezza_stringa_codificata; i+=2)
{
stringa_decodificata[i>>1] = (char)(((stringa_codificata[i]&0xf0)>>4)+((stringa_codificata[i+1]&0x0f)<<4)-chiave[0]);
}
come vedete e' molto facile, ma e' solo per fare delle prove.
ora e' il contrario che non riesco a fare !!!
questo mi da risultati sbagliati :
i=0;
j=0;
for(i=0;i<(int)strlen(stringa_decodificata);i++)
{
j=2*i;
stringa_codificata[j]=(unsigned char)(((stringa_decodificata[i])&0x0f)<<4) ;
stringa_codificata[j+1]=(unsigned char)(((stringa_decodificata[i])&0xf0)>>4) ;
};
praticamente dovrei eseguire l' inverso dei passi del primo pezzo, ma qualcosa mi sfugge...
al momento da una stringa codificata riesco a ricavare la stringa originale .
Ma nel fare i passi inversi mi blocco .
da stringa codificata a stringa in chiaro :
for( i=0; i<lunghezza_stringa_codificata; i+=2)
{
stringa_decodificata[i>>1] = (char)(((stringa_codificata[i]&0xf0)>>4)+((stringa_codificata[i+1]&0x0f)<<4)-chiave[0]);
}
come vedete e' molto facile, ma e' solo per fare delle prove.
ora e' il contrario che non riesco a fare !!!
questo mi da risultati sbagliati :
i=0;
j=0;
for(i=0;i<(int)strlen(stringa_decodificata);i++)
{
j=2*i;
stringa_codificata[j]=(unsigned char)(((stringa_decodificata[i])&0x0f)<<4) ;
stringa_codificata[j+1]=(unsigned char)(((stringa_decodificata[i])&0xf0)>>4) ;
};
praticamente dovrei eseguire l' inverso dei passi del primo pezzo, ma qualcosa mi sfugge...