Unsigned long long type в шестнадцатеричном формате
Я пытаюсь распечатать unsigned long long
следующим образом:
printf("Hex add is: 0x%ux ", hexAdd);
но я получаю ошибки преобразования типов, так как у меня есть unsigned long long
.
Ответы
Ответ 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.
Удачи. отметка