1
我敢肯定這是一個簡單的問題,但我試圖輸出文件(本例中爲* .bmp)中每個字節的十六進制值。我已成功將文件加載到內存中,並且能夠打印十六進制字節值。但是當我打印某些字節時,當我打印某些字節時,例如第三個字節(在偏移量2處),它會打印FFFFFFE6,但是我的hexdump(使用HxD)表示它只是E6。這隻發生在某些字節上,其他字體打印得很好。C++ - 奇怪格式的十六進制輸出
Main.cpp的是:
#include "main.h"
int main()
{
ifstream::pos_type size;
char * memblock;
ifstream file ("C:\\hex.bmp", ios::in|ios::binary|ios::ate);
size = file.tellg();
memblock = new char [size];
file.seekg(0, ios::beg);
file.read(memblock, size);
file.close();
printf("%X", memblock[2]);
delete[] memblock;
cin.get();
}
Main.h是:
#ifndef MAIN_H
#define MAIN_H
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
#endif
嘗試使memblock一個'無符號字符*'。 –
@Deanie I(和[其他人](http://meta.stackoverflow.com/q/325790/3266847))看到您正在進行大量編輯,清理C/C++標記。這本身就是一件好事,但如果你做了一個編輯,確保它是重要的,也就是說,改進所有改進的內容,而不是隻刪除一個標籤。這篇文章的標題標題是[它可能不屬於](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),還有第一段中有一些錯別字,你應該修正。 –