【C言語】printfで16進数表記にする書式(フォーマット指定子)を紹介

この記事では、C言語で10進数を16進数表記にする方法、文字列を16進数表記にする方法、そしてポインタを16進数表記にする方法について解説します。

目次から探す

10進数を16進数表記にする方法

C言語では、printf関数を使用して数値を16進数表記にすることができます。

16進数表記では、0から9までの数字に加えて、AからFまでのアルファベットが使用されます。

以下は、10進数を16進数表記にする方法の例です。

#include <stdio.h>
int main() {
    int decimal = 255;
    printf("10進数: %d\n", decimal);
    printf("16進数: %x\n", decimal);
    
    return 0;
}

上記のコードでは、printf関数のフォーマット指定子として%xを使用しています。

%xは、整数を16進数表記で表示するための指定子です。

実行結果は以下のようになります。

10進数: 255
16進数: ff

%xを使用することで、10進数の255が16進数のffとして表示されました。

文字列を16進数表記にする方法

C言語では、文字列を16進数表記にするためには、printf関数のフォーマット指定子として%sを使用します。

ただし、文字列そのものを16進数表記にすることはできません。

文字列を16進数表記にするためには、文字列をバイト列として扱い、それぞれの文字を16進数で表示する必要があります。

以下は、文字列を16進数表記にする方法の例です。

#include <stdio.h>
int main() {
    char str[] = "Hello, World!";
    printf("文字列: %s\n", str);
    
    for (int i = 0; str[i] != '\0'; i++) {
        printf("%02x ", str[i]);
    }
    
    return 0;
}

上記のコードでは、printf関数のフォーマット指定子として%sを使用しています。

また、文字列を16進数表記にするために、forループを使用して文字列の各文字を16進数で表示しています。

実行結果は以下のようになります。

文字列: Hello, World!
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21

文字列Hello, World!が16進数表記で表示されました。

ポインタを16進数表記にする方法

C言語では、ポインタを16進数表記にするためには、printf関数のフォーマット指定子として%pを使用します。

以下は、ポインタを16進数表記にする方法の例です。

#include <stdio.h>
int main() {
    int num = 10;
    int *ptr = &num;
    
    printf("ポインタの値: %p\n", ptr);
    
    return 0;
}

上記のコードでは、printf関数のフォーマット指定子として%pを使用しています。

%pは、ポインタの値を16進数表記で表示するための指定子です。

実行結果は以下のようになります。

ポインタの値: 0x7ffeeb7a9a9c

ポインタの値が16進数表記で表示されました。

以上が、C言語で10進数を16進数表記にする方法、文字列を16進数表記にする方法、ポインタを16進数表記にする方法です。

目次から探す