以下の提示コードですがバイナリを4バイトのint型整数に変換しているビットシフトという式で正しいのでしょうか?確認しようもバイナリデータのため目視する方法がないため単純な質問をしました。出てきたものを信じるしかないため
cpp
1int convInt(unsigned char* header, int start) 2{ 3 int ret = (header[start + 3] << 24) | (header[start + 2] << 16) | (header[start + 1] << 8) | (header[start + 0]); 4 printf("あああ %d\n",ret); 5 return ret; 6}
> 確認しようもバイナリデータのため目視する方法がない
目視する方法が無いわけではありません。unsigned char* headerを頭から1バイトずつprintfなりsprintfで16進数ダンプすれば良いだけです。
ダンプとはコピーするということでしょうか?
> ダンプとはコピーするということでしょうか?
ちがいます。16進数ダンプとは例えば、printf("%02X %02X", *header, *(header + 1)) のように、内容を晒すことをいいます。ダンプ(dump)とはプログラミングでは頻出の言葉で、元は「ぶちまける」の意があります。詳しくはググってみてください。質問の本筋ではないのでコメントは以上です。
そういったことを簡単にするのがy_waiwaiさんの回答でいう「デバッグ環境を整える」です。Visual Studio を含め、大抵のデバッガーには変数のみならず、メモリの直接のダンプ機能があります。本回答を含め、幾多のコメント、アドバイスをいただいているのですから、素直に従ってみませんか。(今度こそこれでコメント終了です)
回答1件
あなたの回答
tips
プレビュー