Подтвердить что ты не робот

Unsigned long long type в шестнадцатеричном формате

Я пытаюсь распечатать unsigned long long следующим образом:

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

но я получаю ошибки преобразования типов, так как у меня есть unsigned long long.

4b9b3361

Ответ 1

Вы можете использовать тот же модификатор размера ll для %x, таким образом:

#include <stdio.h>

int main() {
    unsigned long long x = 123456789012345ULL;
    printf("%llx\n", x);
    return 0;
}

Полный диапазон спецификаторов преобразования и форматирования находится здесь в большой таблице:

Ответ 2

try %llu - это будет длинным длинным без знака в десятичной форме

%llx печатает длинный длинный знак без знака в шестнадцатеричном формате

Ответ 3

printf("Hex add is: %llu", hexAdd);

Ответ 4

У меня была похожая проблема с этим при использовании библиотек MinGW. Я не мог заставить его распознавать вещи% llu или% llx.

Вот мой ответ...

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

Обратите внимание, я думаю, что% 04x может быть просто% x, но требуется% 08x.

Удачи. отметка