バイナリ ファイルについてもっと学ぼうとしているので、HexEdit から始めて、手動でファイルを書き、そのテンプレートを作成しました。これが私の仕事です:
ここで、C++ Win32 でコンソール アプリケーションの作業を開始し、そのファイルの内容を読み取って見やすくしました。ここに私のコードの一部があります:
typedef unsigned char BYTE;
long getFileSize(FILE *file)
{
long lCurPos, lEndPos;
lCurPos = ftell(file);
fseek(file, 0, 2);
lEndPos = ftell(file);
fseek(file, lCurPos, 0);
return lEndPos;
}
int main()
{
const char *filePath = "D:\\Applications\\ColorTableApplication\\file.clt";
BYTE *fileBuf; // Pointer to our buffered data
FILE *file = NULL; // File pointer
if ((file = fopen(filePath, "rb")) == NULL)
printf_s("Could not open specified file\n");
else {
printf_s("File opened successfully\n");
printf_s("Path: %s\n", filePath);
printf_s("Size: %d bytes\n\n", getFileSize(file));
}
long fileSize = getFileSize(file);
fileBuf = new BYTE[fileSize];
fread(fileBuf, fileSize, 1, file);
for (int i = 0; i < 100; i++){
printf("%X ", fileBuf[i]);
}
_getch();
delete[]fileBuf;
fclose(file); // Almost forgot this
return 0;
}
(私が何をしようとしているのかを理解してもらうために、明確にしたいので、それだけのコードを提供しました)
まず、最初の 14 バイトを取得してコンソールにテキストとして書き込む必要があります。次に、for
色ごとに次のように記述する必要があります。
black col_id = 1; R = 00; G = 00; B = 00;
red col_id = 2; R = FF; G = 00; B = 00;
etc...
これらのバイトを読み取って変換するにはどうすればよいですか?