Bonjour,
Je dois effectuer des mouvements de bits sur des variables comme time_t et j'avoue ne pas trop savoir comment time_t se comporte...
Ainsi j'ai deux variables une appelée a du type time_t d'une valeur de 0x4eba4cfa
et une valeur b de type unsigned long size de valeur 0x7EA
Je dois utiliser le code suivant :
Combien doit-on trouver ? Sachant que d est après utilisé comme une variable signé 16 bits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 unsigned char DEFAULT = 0xaa; unsigned char endecode (time_t a, unsigned long b) { unsigned char d (0); _int64 a_b ((static_cast<_int64> (a) << 32) + b); while (a_b != 0 && d == 0) { d = static_cast<unsigned char>(a_b & 0x0ff); a_b >>= 8; } return static_cast <unsigned char> (d != 0 ? d : DEFAULT); }
Car en faisant le calcul de tête j'obtiens : 0x4cFA Or je sais que le résultat attendu serait plutôt 0xFAFA...
Obtenez vous le même résultat que moi ? (je n'arrive pas à faire tourner ce programme sous code blocks, c'est pour cela que je le fais de tête). Est-ce time_t qui ne se comporte pas comme un unsigned long 32 normal ?
Merci de votre aide
Magicsmacks
Partager