web-dev-qa-db-ja.com

16進形式での符号なしlong long型の印刷

次のようなunsigned long longを出力しようとしています。

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

unsigned long longがあるため、型変換エラーが発生します。

41
Paul the Pirate

%xには同じllサイズ修飾子を使用できます。したがって、

#include <stdio.h>

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

変換および書式指定子の全範囲は、次のすばらしい表にあります。

65
gavinb

試してください%llu-これは10進形式で符号なしのlong longになります

%llx符号なしlong longを16進数で出力します

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

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が必要です。

幸運を。マーク

0
Cool Javelin