16 進数は単なる数値の表現です。数値を 2 進数、10 進数、16 進数、8 進数などとして解釈するかどうかは、あなた次第です。C++ では、10 進数、16 進数、および 8 進数の表現がサポートされていますが、それらはすべて同じ方法で格納されます。
例:
int x = 0x1;
int y = 1;
assert(x == y);
おそらくファイル形式では、ファイルを通常のバイナリ形式で保存する必要があります。ファイル形式が16進数を読み取り可能なテキスト文字列として望んでいるとは思いません。ただし、そうであれば、 std::hex を使用して変換を行うことができます。(例: file << hex << number;
)
ファイル形式が 1 バイト以上の型をファイルに書き込むことについて言及している場合は、アーキテクチャのエンディアンに注意してください。つまり、マルチバイト型の最上位バイトを最初または最後に保存します。
ファイル形式の仕様では、バイナリがファイルの特定の部分をどのように探すべきかを示すことは非常に一般的です。ただし、これを実際に 2 進数を文字列として格納することと混同しないでください。同様に、16 進数でどのように見えるかを指定することで、ショートカットを提供することがあります。繰り返しますが、ほとんどの場合、実際にはテキスト文字列を意味するわけではありません。
C++ でアドレス可能な最小単位char
は 1 バイトです。&
そのバイト内にビットを設定する場合は、 や などのビット単位の演算子を使用する必要があります|
。ビット演算子に関するチュートリアルはたくさんあるので、ここでは詳しく説明しません。