1

基本的に私がやりたいことは、バイナリ ファイルを読み取り、アドレス (0x8000 など) で 4 つの連続した値を抽出することです。たとえば、4 つの数字は 89 ab cd ef です。これらの値を読み取ってバッファに格納し、バッファを int 型に変換したいと考えています。私は次の方法を試しました:

ifstream *pF = new ifstream();  
buffer = new char[4];  
memset(buffer, 0, 4);  
pF->read(buffer, 4);  

私が試したとき

cout << buffer << endl; 

この場所に値があることを保証します (16 進ビューアーでバイナリ ファイルを表示できます)。バッファを int 型に変換して適切に表示する方法を誰かに教えてもらえますか? ありがとうございました。

4

2 に答える 2

2

アップデート

int number = buffer[0];
for (int i = 0; i < 4; ++i)
{
    number <<= 8;
    number |= buffer[i];
}

また、リトル エンディアンとビット エンディアンの表記にも依存します。別の方法で番号を作成する場合は、次を使用できますnumber |= buffer[3 - i]

そして、16進整数を表示するには、使用できます

#include <iomanip>
cout << hex << number;
于 2012-06-14T17:24:40.530 に答える
0
cout << hex << buffer[0] << buffer[1] << buffer[2] << buffer[3] << endl;

http://www.cplusplus.com/reference/iostream/manipulators/hex/を参照してください

于 2012-06-14T17:40:31.010 に答える