私は宿題の問題に取り組んでおり、バイナリファイルから印刷しています。検索したところ、私の問題は符号拡張の問題であることがわかりました。
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';
}
}