C で 16 進値を出力する

Waqar Aslam 2023年10月12日
  1. C プログラミング言語における 16 進数の概要
  2. C プログラミング言語の書式指定子
  3. 16 進値への変換プロセス
  4. 16 進値の出力の実装
  5. %x を使用して、C で 16 進値を小文字で出力する
  6. %X を使用して C で 16 進値を小文字で出力する
C で 16 進値を出力する

この投稿では、C プログラミング言語を使用して 16 進数値を出力する方法について説明します。

C プログラミング言語における 16 進数の概要

16 進数は、C プログラミング言語で 16 個の記号を使用して構成された値です。 これらの記号には、0 から 9 の範囲の 10 個の通常の数値システムと、A から F の範囲の 6つの追加の記号が含まれます。

C の 16 進法は、base-16 数法と呼ばれます。 floatlongdouble などのデータ型で 16 進数を保存することはできません。 ただし、それらを integral データ型に格納することはできます。

C プログラミング言語で 16 進値を入力するには、%x%X などのフォーマット指定子を提供する scanf を使用する必要があります。

16 進値は、C プログラミング言語で 0x または 0X として表されます。 整数を 16 進形式で出力するには、printf() コマンド内で形式指定子 %x または %X を使用する必要があります。

値は、(a-f) のように、%x が使用されている場合、小文字のアルファベットを使用した 16 進形式で出力されます。 値は、(A-F) のように、%X が使用されている場合、アルファベットが大文字の 16 進形式で出力されます。

C プログラミング言語の書式指定子

0x を常に出力に含めたい場合は、値が 0 であっても 0x が出力の先頭に追加されるため、# 記号を使用しないでください。

先行ゼロの生成は、次の方法で幅フィールドを 0 フラグと組み合わせることで実現できます: %08x の値は整数に先行ゼロを追加して、幅が 8 になるようにします。

次のような精度フィールドを使用する可能性もあります。 %.8x は、合計 8 桁になるように、整数を先行ゼロで埋めます。 したがって、0x%.8x は、目的のために検討する別のオプションです。

#0x や符号付き変換の負の整数の - など、変換の一部としてプレフィックスが形成される場合、これらの変換要件は異なります。 接頭辞の長さは幅にはカウントされますが、精度指定子にはカウントされません。

さまざまな指定子を使用して、16 進数のさまざまな出力スタイルを提供する方法の例を次に示します。

#include <stdio.h>

int main() {
  printf("%10x\n", 252);
  printf("%010x\n", 252);
  printf("%#010x\n", 252);

  printf("%10.8x\n", 252);
  printf("%#10.8x\n", 252);
  printf("0x%.8x\n", 252);

  printf("%10x\n", 0);
  printf("%010x\n", 0);
  printf("%#010x\n", 0);

  printf("%10.8x\n", 0);
  printf("%#10.8x\n", 0);
  printf("0x%.8x", 252);
}

出力:

        fc
00000000fc
0x000000fc
  000000fc
0x000000fc
0x000000fc
         0
0000000000
0000000000
  00000000
  00000000
0x000000fc

16 進値への変換プロセス

それでは、システムがこの変換を行う方法を見て、完全に理解できるようにしましょう。

  1. まず、与えられた数値を 16 で割り、残りの演算を記録する必要があります。
  2. 商が 0 になるまでステップ 1 を繰り返します。
  3. 残りのコンポーネントを取得したときと逆の順序で組み合わせます。

16 進値の出力の実装

この例では、たとえば、252 を 16 で割ると、商として 15 が得られ、剰余として 12 が得られます。 ここで、15 を 16 で割ります。 商は 0 になり、剰余は 15 になります。

15 を 16 で割ると、結果の商は 0 になることに注意することが重要です。そのため、ここで計算を終了します。

最初の 2つの段階の後に得られる 2つの剰余は 12 と 15 であり、対応する 16 進数での表現は cf です。 剰余の 16 進表現は、生成方法とは逆の方向に編成されています。

したがって、この例では、値 252 は fc として 16 進数で表されます。

%x を使用して、C で 16 進値を小文字で出力する

16 進値は、%x フォーマット修飾子を使用して小さな文字で出力されます。 ff, ffd など。

次の例を見て、%x フォーマット指定子がどのように機能するかを見てみましょう。

最初のステップは、必要なライブラリをインポートし、main() 関数を構築することです。

次に、データ型 int の変数を作成し、integerValue という名前を付けます。 次に、対応する 16 進数値に変換される整数値を指定します。

次に、整数値を 16 進数に変換する必要があります。これは、%x 指定子によって自動的に実行され、値が小文字で出力されます。

コード:

#include <stdio.h>

int main() {
  int integerValue = 252;
  printf("The converted value in hexadecimal is: %x\n", integerValue);
  return 0;
}

出力:

The converted value in hexadecimal is: fc

%X を使用して C で 16 進値を小文字で出力する

この例では、print ステートメントで %X を使用して、値を大文字で出力します。

#include <stdio.h>

int main() {
  int integerValue = 252;
  printf("The converted value in hexadecimal is: %X\n", integerValue);
  return 0;
}

出力:

The converted value in hexadecimal is: FC
著者: Waqar Aslam
Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn