Date: 2016jan2
Update: 2026sep28
Language: C/C++
OS: Linux
Q. C/C++: Easily include a binary file in my code
A. Use the xxd command with --include option:
xxd --include example.data
When file example.data contains "example\n" you get:
unsigned char example_data[] = {
0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a
};
unsigned int example_data_len = 8;
So, you can do:
xxd --include example.data > example.inc
Perhaps in a Makefile
Full Example Use.
Makefile:
# When example.data changes recreate example.inc
example.inc: example.data
xxd --include example.data > example.inc
# Rebuild tst.o when example.inc or tst.cpp changes
tst.o: example.inc tst.cpp
$(CC) $(CFLAGS) -c $*.cpp
# The goal of the Makefile is create executable tst
all: tst
tst.cpp:
#include <stdio.h>
#include "example.inc"
int main() {
for (int i = 0; i < example_data_len; i++) {
printf("example_data[%02d]=0x%02x\n", i, example_data[i]);
}
}
Output:
example_data[00]=0x65
example_data[01]=0x78
example_data[02]=0x61
example_data[03]=0x6d
example_data[04]=0x70
example_data[05]=0x6c
example_data[06]=0x65
example_data[07]=0x5c
example_data[08]=0x6e
example_data[09]=0x0a