1

これは簡単な質問だと思いますが、ファイル (この場合は *.bmp) の各バイトの 16 進数値を出力しようとしています。ファイルをメモリに正常にロードし、バイトの 16 進値を出力できました。しかし、特定のバイトを印刷すると、たとえば 3 番目のバイト (オフセット 2) などの特定のバイトを印刷すると、FFFFFFE6 が出力されますが、ファイルの 16 進ダンプ (HxD を使用) では E6 とだけ表示されます。これは特定のバイトでのみ発生し、他のバイトは問題なく出力されます。

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
4

1 に答える 1