次のようなunsigned long long
を出力しようとしています。
printf("Hex add is: 0x%ux ", hexAdd);
unsigned long long
があるため、型変換エラーが発生します。
%x
には同じll
サイズ修飾子を使用できます。したがって、
#include <stdio.h>
int main() {
unsigned long long x = 123456789012345ULL;
printf("%llx\n", x);
return 0;
}
変換および書式指定子の全範囲は、次のすばらしい表にあります。
試してください%llu
-これは10進形式で符号なしのlong longになります
%llx
符号なしlong longを16進数で出力します
printf("Hex add is: %llu", hexAdd);
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が必要です。
幸運を。マーク