이진 파일에 대해 더 자세히 배우려고하고 있기 때문에 HexEdit으로 시작했고 수동으로 파일을 작성하고 이에 대한 템플릿을 만들었습니다.C++로 이진 파일을 읽고 그 안에있는 일부 내용을 번역하십시오.
지금, 나는 그 파일의 내용을 읽고 그들을 친화적 보이게하기 위해 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...
가 어떻게 읽고이 바이트를 번역 할 수 있습니다?
같이 할 수있는 읽을 때. 나는 당신의 포맷이 "제정신"이라고 확신하지 않는다고 말해야한다. - 당신은 문자열을 가지고 있는데, 그것은 0을 가지지 않는 것으로 보인다 ("lightgreen"은 내가 볼 수있는 한 10 바이트 필드의 10 바이트를 차지한다) . 형식은 또한 정렬되지 않았습니다 - 그리고 당신은 14 바이트라고 말하지만, 제가 보는 한 13 바이트입니다. –
미안 해요 @MatsPetersson, "처음 14 바이트"는 내 파일의 처음 14 바이트를 뜻합니다 :'ColorTableFile' – Victor