ユーザーが変数に 2 つの文字を入力するコードがありstring
ます。ユーザー入力の長さが2文字のみであり、有効な16進数のみが含まれていることを確認する関数があります。
これらの数字を 32 バイト長のバイナリ ファイルに書き込みたいと考えています。私は試した:
outFile.write((char*)&string[0], 1);
テストのために32回実行されるループ(一度に1バイトずつ書き込みたい)ですが、実際のchar自体ではなく、charのASCIIコードを書き込むだけです。ニブルを書き込み、ニブルをスキップすることを期待していましたが、代わりに 1 バイトの ASCII 情報を書き込みました。だから私は試しました:
outFile.write((unsigned char*)&string[0], 1);
しかし、私のコンパイラは、それが無効なキャストであると不平を言っています。
文字列を C スタイルの文字列に変換せずにこの問題を解決したいと考えています。string
つまり、 2 つの文字を含めて、1 バイトの情報を表現したいと考えています。4 つではありません (およびヌル文字)。