바이너리파일을 십진수 코드로 출력하는 코드 조언좀 부탁드리겠습니다
조회수 543회
위의 바이너리코드에서 2칸이 4byte를 나타내며,
0번의 코드에서
첫번째칸 0000 0000 => ID : 0
두번째칸 0000 0000 => Time : 0
세번째칸 0000 0014 => Size : 14 => 20
이므로 10진수로는 20을 나타내는 것으로 이해하였습니다.
즉 다음 10개의 코드 튜플들이 0번의 코드가 되는것이죠.
첫번째 코드튜플인 ac01 은 operation : 01 이고 ac는 10진수로 172이므로 length : 172 가 되는것으로 이해했습니다.
이러한 바이너리 파일을
0 0 20
1 172
0 6
1 132
..... ( 코드튜플 10개 )
1 0 46
.... ( 코드튜플 23개 )
으로 쭉 이어지게 표현이 되게 코드를 쓰는 것이 목표입니다.
그래서 제가 작성한 코드는
#include <stdio.h>
typedef struct {
int pid; //ID
int arrival_time; //도착시간
int code_byte; //크기
}process;
int main() {
process buffer;
FILE* fp;
fp = fopen("test.bin", "rb");
if (fp == NULL) {
fprintf(stderr, "파일열기 실패");
return 1;
}
else {
while (!feof(fp)) {
fprintf(stdout, "%d %d %d\n", buffer.pid, buffer.arrival_time, buffer.code_byte);
int s = fread(&buffer, sizeof(buffer), 1, fp);
/* 여기서부터 막히네요..
for (int i = 0; i < s; i++) {
printf("%d %d", buffer.arrival_time, buffer.code_byte);
}
}
*/
}
fclose(fp);
return 0;
위의 코드에서 fread 를 통해 바이너리 파일을 읽고 그 사이즈를 반복문을 통해 튜플들을 표현하는 코드를 작성하려고 하는데 질문이 있습니다.
제가 원하는 방법은 fread 를 통해 나온 값을 반복문에 넣으면서 0 0 20 의 사이즈만큼 반복을 하는 것인데 위의 코 드가 제가 원하는 방향이 맞나요??
위의 코드에서 에러가 나오는데 어떤 부분이 문제인걸까요??
코드 튜플을 표현하려면 또 다른 구조체를 만들어서 표현해야하는 것 같은데 어떻게 표현할 수 있을까요??
긴 글 읽어주셔서 감사합니다.
댓글 입력