Besoin d'aide permutation binaire - C - Programmation
Marsh Posté le 17-11-2011 à 03:30:12
>> Je n'arrive pas non plus avec fgetc à lire le fichier par bloc de 2 octets, j'ai donc mes 2 octets dans 2 variables différentes.
Je vais supposer que vous êtes dans un environnement ou un unsigned short int fait deux octets.
unsigned short int read_bloc(FILE *fd) {
int bloc = 0;
bloc += fgetc(fd);
bloc <<= 8;
bloc += fgetc(fd);
return bloc; // casté à la bonne taille par le type de retour;
}
A vous de faire ce qu'il faut si le fichier n'a plus qu'un octet et non deux.
A+,
Marsh Posté le 17-11-2011 à 02:35:57
Bonsoir à tous et merci pour ce site!
J'ai débuté le C hier soir donc je galère un peu sur certaines choses.
Je cherche simplement à :
-Ouvrir un fichier.
-Convertir son contenu en binaire par blocs de 2 octets donc 16 bits.
-Permuter chacun de ces 16 bits selon une table de permutation que je veux pouvoir changer.
En voila une pour exemple :
00|01|02|03 04|05|06|07 08|09|10|11 12|13|14|15
00|02|04|06 15|13|11|09 01|03|05|07 14|12|10|08
Exemple :
Avant permutation : 1100 0000 0000 0101 = 0xC005
Après permutation : 1010 0000 1000 1000 = 0xA088
-Reconvertir en Hexadécimal ces informations ainsi permutées.
-Enregistrer le tout dans un nouveau fichier.
Voilà.
Alors j'arrive sans trop de problèmes à convertir en binaire, seulement je pensais attribuer chacun des 16 bits dans une variable différente, hors je n'arrive déjà pas à concaténer plusieurs variables en une seule.
Je n'arrive pas non plus avec fgetc à lire le fichier par bloc de 2 octets, j'ai donc mes 2 octets dans 2 variables différentes.
Et avec fgets la variable étant une chaine, j'ai bien mon bloc de 2 octets mais il m'est impossible d'en faire quelque chose (%X me renvoie n'importe quoi).
Je ne sais pas si je pars dans la bonne direction.
Merci
Chris