我有i文件我想用C++讀取。首先我必須閱讀並檢查文件的幻數。在我的情況下,它是十六進制值:0xABCDEF00C++從文件中讀取和比較幻數
我閱讀和比較的數字是這樣的:
ifstream input ("C:/Desktop/myfile", ios::binary);
if (input.is_open()) {
input.seekg(0, ios::beg);
unsigned char magic[4] = {0};
input.read((char*)magic, sizeof(magic));
if(magic[0] == 0xAB &&
magic[1] == 0xCD &&
magic[2] == 0xEF &&
magic[3] == 0x00) {
cout << "It's my File!" << endl;
} else {
cout << "Unknown File!" << endl;
}
}
這工作得很好,但有沒有辦法比較全讀的char [] - 陣列一次?像這樣:
unsigned int magicNumber = 0xABCDEF00;
... same code for reading file as above ...
Instead of checking each Array-Entry a way like this:
if(magic == magicNumber) {
do something ...
}
會很高興地知道,如果有這樣一種方式 - 如果不是感謝teeling我,有沒有這樣的方式:)
您可以使用memcpy將char數組的內容複製到unsigned int中。 'memcpy(&anUnsignedInt,magic,sizeof(unsigned int));' – Christoph
是'long'範圍內的神奇數字嗎?然後考慮'std :: stol'或熟悉的('stoi'代表'int','stoll'代表'long long',在'i' /'l' /'ll'之前加'u'代表unsigned)... –
不會在二進制文件中工作,@LapshinDmitry – user4581301