我正在從一個二進制文件打印作業問題。 我已經搜索並發現我的問題是一個符號擴展問題。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