J'essaie d'imprimer un unsigned long long
comme ça:
printf("Hex add is: 0x%ux ", hexAdd);
mais je reçois des erreurs de conversion de type car j'ai un unsigned long long
.
Vous pouvez utiliser le même modificateur de taille ll
pour %x
, Ainsi:
#include <stdio.h>
int main() {
unsigned long long x = 123456789012345ULL;
printf("%llx\n", x);
return 0;
}
La gamme complète de spécificateurs de conversion et de formatage se trouve dans un excellent tableau ici:
essayez %llu
_ ce sera longtemps non signé sous forme décimale
%llx
affiche longtemps non signé en hexadécimal
printf("Hex add is: %llu", hexAdd);
J'ai eu un problème similaire avec cela en utilisant les bibliothèques MinGW. Je ne pouvais pas le faire reconnaître les trucs% llu ou% llx.
Voici ma réponse ...
void PutValue64(uint64_t value) {
char a_string[25]; // 16 for the hex data, 2 for the 0x, 1 for the term, and some spare
uint32 MSB_part;
uint32 LSB_part;
MSB_part = value >> 32;
LSB_part= value & 0x00000000FFFFFFFF;
printf(a_string, "0x%04x%08x", MSB_part, LSB_part);
}
Notez que je pense que% 04x peut simplement être% x, mais que% 08x est requis.
Bonne chance. marque