2
int main()
{
   char B[76]={0};

   ifstream infile;
   infile.open("tworecords.dat", ios::binary);
   infile.read(reinterpret_cast<char*>(B), sizeof (B));

   cout << "Array B in hex" << endl;

   for (int i = 0; i < 76; i++)
   {
      cout << hex << B[i] << " " << endl;;
   }

   return 0;


}

現在、データは正しく読み取られますが、値は ASCII シンボルとして出力されます。ファイルに実際の16進値を出力したいと思います。

例:

01 3D 76 D6 など

4

2 に答える 2

4

整数にキャストします。

cout << hex << static_cast<int>(B[i]) << " " << endl;

または、キャストしたくない場合は、0 を追加します。

cout << hex << B[i]+0 << " " << endl;

ただし、16 未満の値の場合、行頭が出力されることを確認したい場合もあります (例:だけでなく0、改行文字の場合):0AA

cout << setfill('0') << setw(2) << hex << B[i]+0 << " " << endl;
于 2013-06-10T19:49:55.953 に答える
1

数値を整数にキャストするだけです。

cout << hex << (int)B[i] << " " << endl;

<iostream>ライブラリ (実際にはすべてのストリーム ライブラリ) は、型の ascii 値を出力しますchar

于 2013-06-10T19:49:48.357 に答える