Pour std::cout je sais pas, je m'en sers pas.
Par contre, ce que tu fais avec printf() n'est pas valide : l'argument de %X doit être un unsigned int, et il faut un cast explicite car printf() a un nombre d'arguments variables dont le type n'est pas connu à l'avance. Par coup de pot, ça fonctionne quand même sans sur x86, mais ça déconne sur d'autres architectures.

—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT TurboJe ne me sers pas de printf en général, c'était un test; je pense (sans avoir regardé le vaudou derrière printf, aka parsing du format pour déterminer les types) que mon uint8_t (aka unsigned char sur la plupart des platformes) est simplement cast implicitement sur un unsigned int. (sur x86)
Je trouve juste bizarre que std::cout ne lise que les 4 premiers bits (ou du moins, en ait l'air) d'un byte, qui est par définition sur 8 bits... Soit je me suis planté quelque part de façon tellement évidente que je ne vois pas mon erreur, soit y a un bug quelque part (et ça me surprendrait qu'un tel bug n'aurait pas été déjà trouvé et signalé)
printf("\nvia printf: %X\n", (unsigned int)(byte)); écrit bien 35, mais c'est normal, on étend à 32 bits.
Tous les compilateurs (et en particuliers ceux dédiés à l'embarqué) ne respectent pas la norme à la lettre (parfois parce que ça n'aurait pas de sens sur le HW... et parfois pas).

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.