C++ での 16 進数値の出力

C Deno 16 Jin Shu Zhino Chu Li



C++ プログラミングでは、16 進値を出力することが一般的な要件です。メモリ アドレスの操作、ビット単位の演算の実行、またはデータの 16 進表現の処理のいずれを行う場合でも、16 進値を効果的に表示するためのさまざまな方法を理解することが不可欠です。この記事では、C++ で 16 進値を出力するためのさまざまな方法とテクニックを検討し、そのアプリケーションとユースケースに光を当てます。

Std::hex を使用した 16 進値の出力

C++ で 16 進値を出力する簡単な方法の 1 つは、 ヘッダーによって提供される「std::hex」マニピュレーターを使用することです。このマニピュレータは、印刷時に整数値を 16 進数として解釈するように出力ストリームに指示します。数字が詰まった宝箱があると想像してください。ただし、通常の 10 進法ではなく、すべて 16 進数という秘密の言語で書かれています。これらのコードを解読してその真の値を明らかにするために、C++ は「std::hex」と呼ばれる便利なツールを提供しています。 ライブラリのこの魔法のトリックは、出力ストリームをデコーダ リングに変換し、これらの謎の 16 進数をおなじみの 10 進数に瞬時に変換します。







#include
#include
整数メイン ( {
int 10 進値 = 907 ;
std::cout << '16 進値は次のとおりです。' << std::hex << 10 進値 << std::endl;
戻る 0 ;
}


この例では、「10 進値」整数を出力する前に、「std::hex」マニピュレータが「std::cout」出力ストリームに適用されます。 16 進値を出力した後、ストリームは通常の動作に戻ります。このコードは、C++ で「std::hex」マニピュレータを使用して 16 進値を出力する方法を完全に示しています。コードの内訳は次のとおりです。



ヘッダー



: コンソールへの出力などの基本的な入出力に使用され、出力を 16 進数としてフォーマットするための「std::hex」マニピュレータを提供します。





メイン機能

「int decmalValue = 907;」 「int」型の「decmalValue」変数を宣言し、それに 10 進数値 907 を割り当てます。



「std::cout << 「16 進値は次のとおりです。」 << std::hex << decmalValue << std::endl;」 「16 進値:」に続いて「16 進値」の 16 進表現が出力されます。

「std::hex」は、次の値を 16 進数として解釈するように出力ストリームに指示します。 「decmalValue」変数には、16 進数に変換される 10 進数値が含まれます。 「std::endl」は印刷後に改行文字を挿入します。最後に、次の出力スニペットに示すように、このコードは「16 進値: 38B」を出力します。

「%x」形式指定子を使用した 16 進値の出力

C プログラミング言語に精通している人にとっては、「printf」関数は C++ で 16 進値を簡潔に出力します。 C++ は および 'std::hex' アプローチを提供しますが、'printf' は同じ結果を達成するための簡潔かつ直接的な方法を提供します。

#include
整数メイン ( {
int 10 進値 = 1256 ;
プリントフ ( 「printf の 16 進値は: %x です」 \n 、10 進値 ;
戻る 0 ;
}


この例では、「printf」関数内の「%x」形式指定子は、対応する引数を 16 進数で出力する必要があることを示しています。指定されたコードは、C++ の「printf」を使用して 16 進値を出力する完璧な例です。分析してみましょう:

ヘッダー

: このヘッダーには、「printf」関数およびその他の標準入出力関数が含まれます。 ヘッダーは、C++ に付属する一連のライブラリに含まれています。これにより、C 言語の ライブラリの機能が取り込まれ、 をインクルードすることにより、C++ で元々 C に備わっていた古典的な入出力テクニックを利用できるようになります。

メイン機能

「int decmalValue = 1256;」は、10 進数値 1256 を宣言し、「decmalValue」という名前の整変数に割り当てます。 「printf(“printf を使用した 16 進値は: %x\n”, 10進数の値);」の「printf」このステートメントは「printf」関数を呼び出して、フォーマットされた出力を印刷します。 「%x」は、次の引数を小文字の 16 進数として出力する必要があることを示す「形式指定子」です。最後に「\n」は印刷後に改行文字を挿入します。このコードは、次の出力スニペットに示すように、「printf の 16 進値は 4e8」をコンソールに出力します。

パディング付きの 16 進値の出力

16 進値、特にメモリ アドレスを扱う場合、多くの場合、一貫した幅またはパディングが望ましいです。これは、 ヘッダーによって提供される「std::setw」マニピュレーターを使用して実現できます。パディング付きの 16 進値を出力する方法の例を次に示します。このプログラムは、 ヘッダー メソッドとマニピュレーター メソッドを使用して、C++ でパディング付きの 16 進値を出力する方法を示します。

#include
#include
整数メイン ( {
int 10 進値 = 47 ;
std::cout << 'パディング付きの 16 進値は次のとおりです。' << std::setw ( 8 << std::hex << 10 進値 << std::endl;
戻る 0 ;
}


この例では、 std::setw(8) により、16 進値が最小幅 8 文字で出力されるようになります。これは、列内の値やメモリ アドレスを揃える場合に特に便利です。

コードを分割して、各行を 1 つずつ理解してみましょう。

ヘッダー

: 印刷用の「std::cout」ストリームなどの基本的な入出力機能を提供します。

: 出力の外観を変更するために使用される「std::setw」などの書式設定マニピュレーターを提供します。

メイン機能

「int decmalValue = 47;」は、10 進数値 47 を宣言し、「decmalValue」という名前の整変数に割り当てます。

「std::cout << 「パディング付きの 16 進値は次のとおりです。」 << std::setw(8) << std::hex << decmalValue << std::endl;」ステートメントは、setw(8) パディングを使用して 16 進数 47 を出力します。 「std::setw(8)」は、引数 8 を指定して「std::setw」マニピュレータを適用し、最小出力幅 8 文字を指定します。

「std::hex」は、指定された例の 1 つで説明したように、次の値を 16 進数として解釈するようにストリームに指示する「std::hex」マニピュレータを適用します。次の出力がコンソールに出力されます。

バイトデータの 16 進値の出力

バイト データを扱う場合、各バイトを 2 桁の 16 進値として表すのが一般的です。これは、幅が 2 に設定されていることを確認し、「std::setfill(‘0’)」を使用して先頭のゼロを埋めることで実現できます。以下は、バイト データの 16 進値を出力する方法を理解するのに役立つ例です。

#include
#include
整数メイン ( {
unsigned char byteData = 0xAB;
std::cout << 'バイト データの 16 進表現は次のとおりです。'
<< std::setw ( 2 << std::setfill ( 「0」 << std::hex << static_cast < 整数 > ( バイトデータ
<< std::endl;
戻る 0 ;
}


ここで、「std::setw(2)」は各バイトが最小 2 文字の幅で表現されることを保証し、「std::setfill(‘0’)」は幅を埋めるために先行ゼロを使用する必要があることを指定します。

この以前に与えられたプログラムは、特定の書式設定を使用して C++ で 16 進値を出力するためのより高度なアプローチを示しています。より深く理解するために、それを分解してみましょう。

ヘッダー

: 印刷用の「std::cout」や「std::hex」などの基本的な入出力機能を提供します。

: 出力の外観を変更するために使用される「std::setw」や「std::setfill」などの書式設定マニピュレータを提供します。

メイン機能

main関数では、符号なしの「byteData = 0xAB;」 char が定義されており、「byteData」という名前の unsigned char 変数を宣言し、それに 16 進値「0xAB」を割り当てます。 「std::cout << 「バイト データの 16 進表現は次のとおりです:」ステートメントは、出力ストリームを使用してメッセージをコンソールに出力します。

「<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;」ステートメント チェーンは複数のマニピュレータを適用して出力をフォーマットします。

std::setw(2): 最小出力幅を 2 ​​文字に設定します。

std::setfill(‘0’): 最小幅に達するために必要なパディングを「0」文字で埋めることを指定します。

std::hex: 次の値を 16 進数として解釈するようにストリームに指示します。

static_cast (byteData): 16 進数に変換する前に、unsigned char データを「int」にキャストします。これは技術的には必要ありませんが、一部の書式設定オプションとの一貫性を保つために使用できます。

std::endl: 印刷後に改行文字を挿入します。

コンソールに表示されるこのプログラムの出力を次のスニペットに示します。

結論

C++ で 16 進値を出力するには、利用可能なツールを理解し、特定の要件に基づいて適切な方法を選択する必要があります。 「std::hex」マニピュレーター、「printf」関数、またはパディングと先行ゼロのための書式設定ツールの組み合わせのいずれを選択する場合でも、これらのテクニックをしっかりと理解することは、C++ プログラマーにとって不可欠です。これらの方法を慎重に適用すると、16 進値が正確に、視覚的に魅力的な形式で表示され、C++ コード全体の読みやすさと明瞭さが向上します。