如何用十六进制而不是ASCII符号显示实际值?

How do I show the actual values in hex instead of the ASCII symbols

本文关键字:显示 符号 ASCII 十六进制 何用      更新时间:2023-10-16
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符号打印出来。我想在文件中输出实际的十六进制值。

的例子:

013 d76D6等。

将其强制转换为整数:

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;

您只需将数字转换为整数:

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

<iostream>库(实际上,所有流库)输出char类型的ascii值。