web-dev-qa-db-fra.com

Impression de type long long non signée au format hexadécimal

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.

41
Paul the Pirate

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:

65
gavinb

essayez %llu _ ce sera longtemps non signé sous forme décimale

%llx affiche longtemps non signé en hexadécimal

4
Iłya Bursov
printf("Hex add is: %llu", hexAdd);
2
Joseph

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

0
Cool Javelin