我正在处理一个家庭作业问题,从二进制文件打印。我搜索并发现我的问题是符号扩展问题。
在 c 中,正确的操作是强制转换为 (unsigned char)
我已经尝试过这个解决方案,但它不适用于 cout
带有(无符号)的输出是:
4D 5A FFFFFF90 00 03 00 00 00 04 00 00 00 FFFFFFFF FFFFFFFF 00 00
(unsigned char) 的输出是:
0M 0Z 0ê 0� 0 0� 0� 0� 0 0� 0� 0� 0ˇ 0ˇ 0� 0�
任何指导都是最有帮助的;
这是代码:
void ListHex(ifstream &inFile)
{
// declare variables
char buf[NUMCHAR];
unsigned char bchar;
while(!inFile.eof())
{
inFile.read(buf,NUMCHAR);
for (int count = 0; count < inFile.gcount(); ++count)
{
cout << setfill('0') << setw(2) << uppercase << hex <<
(unsigned)buf[count] << ' ';
}
cout << '\n';
}
}