unsigned long long type printing in hexadecimal format

后端 未结 4 1977
萌比男神i
萌比男神i 2020-12-23 19:29

I am trying to print out an unsigned long long like this:

  printf(\"Hex add is: 0x%ux \", hexAdd);

but I am getting type conv

相关标签:
4条回答
  • 2020-12-23 19:59

    try %llu - this will be long long unsigned in decimal form

    %llx prints long long unsigned in hex

    0 讨论(0)
  • 2020-12-23 20:02

    I had a similar issue with this using the MinGW libraries. I couldn't get it to recognize the %llu or %llx stuff.

    Here is my answer...

    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);
    }
    

    Note, I think the %04x can simply be %x, but the %08x is required.

    Good luck. Mark

    0 讨论(0)
  • 2020-12-23 20:04

    You can use the same ll size modifier for %x, thus:

    #include <stdio.h>
    
    int main() {
        unsigned long long x = 123456789012345ULL;
        printf("%llx\n", x);
        return 0;
    }
    

    The full range of conversion and formatting specifiers is in a great table here:

    • printf documentation on cppeference.com
    0 讨论(0)
  • 2020-12-23 20:12
    printf("Hex add is: %llu", hexAdd);
    
    0 讨论(0)
提交回复
热议问题