Besoin d'aide permutation binaire

Besoin d'aide permutation binaire - C - Programmation

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

Reply

Marsh Posté le 17-11-2011 à 02:35:57   

Reply

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed