C++ 如何以十六进制而不是ASCII符号显示实际值 intmain() { char B[76]={0}; 河流充填; infle.open(“tworecords.dat”,ios::binary); 填充读取(重新解释铸造(B),尺寸(B)); 您只需将数字转换为整数即可: 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; } cout

C++ 如何以十六进制而不是ASCII符号显示实际值 intmain() { char B[76]={0}; 河流充填; infle.open(“tworecords.dat”,ios::binary); 填充读取(重新解释铸造(B),尺寸(B)); 您只需将数字转换为整数即可: 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; } cout,c++,hex,C++,Hex,将其强制转换为整数: cout << hex << (int)B[i] << " " << endl; reinterpret\u cast回到char*之外的东西。谢谢!不过我还有一个简单的问题。在一些值上,在实际值之前只有一堆f,是否有办法去除它们。对不起,我对这方面很陌生。@AlejandroHerrera,这是因为符号扩展。Mastint使用0xFF,例如:因为从char到int的转换过程中出现符号扩展,所以f是否存在。如果不能将B更改为

将其强制转换为整数:

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

reinterpret\u cast
回到
char*
之外的东西。谢谢!不过我还有一个简单的问题。在一些值上,在实际值之前只有一堆f,是否有办法去除它们。对不起,我对这方面很陌生。@AlejandroHerrera,这是因为符号扩展。Mast
int
使用
0xFF
,例如:
因为从
char
int
的转换过程中出现符号扩展,所以f是否存在。如果不能将B更改为
无符号char
,则需要先转换为
无符号char
,然后再转换为
int
。这有点笨拙,但你可以这样做了
库为
char
类型输出文本。如果系统使用ASCII编码(几乎可以肯定),它将输出与
char
对象持有的ASCII值相对应的字符。
cout << hex << static_cast<int>(B[i]) << " " << endl;
cout << hex << B[i]+0 << " " << endl;
cout << setfill('0') << setw(2) << hex << B[i]+0 << " " << endl;