Fermer2
WarptenLe 25/08/2014 à 13:18
Merci de m'éclairer, je comprends plus rien.

Un u32: 32 bits = 4 * 1 byte
donc un byte = 8bits = (u)int8_t

Alors quelqu'un peut m'expliquer le résultat de ceci?

http://ideone.com/RG3yxK

Pourquoi quand je passe par std::cout, seuls les 4 premiers bits sont gérés dans mon byte? par printf, tout est normal...
#include <iostream> #include <cstdint> #include <bitset> int main() { uint32_t x = 0x0FFFFE35; std::cout << std::bitset<32>(x) << " " << std::bitset<8>(((int8_t)x)); std::cout << std::endl; std::cout << std::hex << x << " " << std::hex << uint8_t(x & 0xFF); std::cout << std::endl; std::cout << std::hex << x << " " << std::hex << (x & 0xFF); uint8_t byte = 0x35; printf("\nvia printf: %X\n", byte); std::cout << std::hex << x << " " << std::hex << byte; return 0; }