1. ホーム
  2. c

[解決済み] C - %x フォーマット指定子

2022-02-02 20:01:17

質問事項

ちょっとした疑問があります。 フォーマット文字列攻撃でスタックから値を読み取るのに、%xフォーマット指定子が使えるのは知っているのですが。

以下のようなコードを発見しました。

%08x%08x%08x%08x

08は何を意味しているのか? 具体的に何をしているのでしょうか? ありがとうございます :)

解決方法は?

ブレイクダウン

  • 8 8桁の数字を表示させたいということです
  • 0 で接頭辞を付けたい場合 0 の代わりに空白を使用します。
  • x を小文字の16進数で表示させたい場合。

簡単な例です(Grijesh Chauhanに感謝します)。

#include <stdio.h>
int main() {
    int data = 29;
    printf("%x\n", data);    // just print data
    printf("%0x\n", data);   // just print data ('0' on its own has no effect)
    printf("%8x\n", data);   // print in 8 width and pad with blank spaces
    printf("%08x\n", data);  // print in 8 width and pad with 0's

    return 0;
}

出力します。

1d
1d
      1d
0000001d

以下もご参照ください。 http://www.cplusplus.com/reference/cstdio/printf/ を参考にしてください。