변수에 바이너리 파일의 내용을 직접 대입하는 방법은 없을까요?

freezm7의 이미지

bitmap 파일을 프로그램의 data segment 에 넣고 싶을 때,
저는 bitmap 파일을 우선 0x00, 0x3F, 0x3F ... 의 형식의
Hex 로 만들어 주고, 이것을 다시 프로그램에 복사해서 쓰고 있습니다.

즉,


const char bitmap_1[100] = {0x00, 0x3F, 0x3F, ... }

이런식으로 짜고 있는데요,

① binary -> hex -> binary 의 불필요한 전환 과정이 깨름찍하고,

② 비트맵의 내용이 바뀔 경우마다,
bin -> hex 변환 후 소스파일에 붙여주는 작업을 반복 해야만 합니다.
(무한 삽질이 되죠.)

표준은 아니더라도 preprocessor 에서 해 줄 수 있을 것 같은데 혹시 이런 기능이 있나요?

gcc를 쓰고 있습니다.

Prentice의 이미지

http://bbs.kldp.org/viewtopic.php?t=35685

혹시 도움이 될까요..?

키워드: 비트맵, gd

freezm7의 이미지

검은해 wrote:
http://bbs.kldp.org/viewtopic.php?t=35685

혹시 도움이 될까요..?

키워드: 비트맵, gd

제가 궁금해 하는 것과는 조금 다른 내용이네요.

그래도 도움은 되었습니다. :D

즐겁게 살아 볼까나~*

kslee80의 이미지

2번 과정의 노가다에 xxd -i 를 사용하는게 어떨지요?
xxd -i 를 이용해서 헤더 파일을 만들고,
해당 데이타가 필요한 파일들에서 그 헤더를 인클루드 하게 한다면
소스코드마다 붙여주는 노가다는 줄일수 있지 않을까 싶네요.

참고로 xxd -i 의 출력은...

kslee@kslee:~$ ls -al p_exe
-rwxr-xr-x    1 kslee    kslee       11989 2004-06-25 19:56 p_exe
kslee@kslee:~$ xxd -i p_exe > p.h
kslee@kslee:~$ cat p.h
unsigned char p_exe[] = {
  0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
  ... (생략) ...
  0x67, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x5f,
  0x00
};
unsigned int p_exe_len = 11989;
kslee@kslee:~$

이런 식의 출력이 나옵니다;;