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 符号。我想在文件中输出实际的十六进制值。

例子:

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打印前导(例如,换行符0A,而不仅仅是A):

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 回答