Bonjour,
Voila Est-il possible de convertir un type __int64 (8 bytes) en binaire.
Je dois entrer un grand nombre decimal que je dois par la suite passé à un membre struct variable unsigned char blob [16]. L'ideal je pense c'est d'utiliser les masques et les operateurs >>, << .
Je n'obtient pour le moment pas ce que je veux car j'arive à obtenir un tableau de char qui contient qu'un seul bit '1' ou '0' alors je n'aurais pas assez pour mettre mes 128 bits (donc 16 * 8 bytes )
Mon objectif c'est par exemple :
on entre une valeur decimal : 15451254
j evoudrais le format binaire en 128 bits : 111010111100010001110110
pourriez vous me dire la marche à suivre sachant que j'utilise des pointeurs sur mes variables struct .
mes variables :
de cette manière je ne convertit rien en format binair ça reste des tableaux de char
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 __int64 badge_id=0; // ... struct frame_message { unsigned int sender_id; unsigned int packet_type;//crcin unsigned char blob[16];// unsigned int pin_code;//crcin unsigned char padding_bytes[8]; }allmsg; .... unsigned char *ps_card_number = (unsigned char*)malloc(16*sizeof(char)); ps_card_number = (unsigned char*)&allmsg.card_number; //crcin ... printf(" Give the blob :"); //scanf("%Lu",&badge_id); //scanf("%d",&badge_id); scanf("%d",&badge_id);//////ici ... ps_card_number=(unsigned char*)&badge_id;
pourrais utiliser directement une ecriture sur la variable struct comme ceci ?
Est ce que la demarche est bonne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 allmsg.card_number[1]=(unsigned char) ((badge_id >> 8) & 0x0000000000000000000000000000FF); allmsg.card_number[2]=(unsigned char) ((badge_id >> 16) & 0x00000000000000000000000000FF); ... allmsg.blob[15]=(unsigned char) ((badge_id >> 120) & 0xFF);
Je triche en mettant 16 bytes de masque (sachant que c'est du __int64 donc 8 bytes simplement), bien sur le resultat n'est pas correct .
Merci
Partager