我正在从一个二进制文件打印作业问题。 我已经搜索并发现我的问题是一个符号扩展问题。C++符号扩展
在C正确的行动将强制转换为(无符号字符)
我已经试过这个解决方案,它不与COUT
输出,(无符号)的工作是:
4D 5A FFFFFF90 00 03 00 00 00 04 00 00 00 FFFFFFFF FFFFFFFF 00 00
输出与(无符号字符)是:
0M 0Z 0ê 0� 0 0� 0� 0� 0 0� 0� 0� 0ˇ 0ˇ 0� 0�
任何指导将是最ħ elpful;
下面是代码:
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';
}
}
[tag:homework]标记已过时。查看标签信息。 – Dukeling 2013-03-01 19:35:50
尝试将'buf'改为'unsigned char buf [NUMCHAR];'然后在'inFile中进行演员阵容。读((char *)buf,NUMCHAR);' – 2013-03-01 19:40:21
@RobertMason,试过这个,输出结果与(unsigned char) – 2013-03-01 19:43:09