Convert a File to a C Data Structure


Yesterday's post about embedding a file in an executable has gotten a couple of replies about programs that will convert the file to a C data structure. This is certainly an option, here's a script that does that without the need to go searching for programs, it uses standard Linux tools:


if [[ $# -ne 1 ]]; then
    echo "Usage: $0 FILENAME"
    exit 1

if [[ ! -f "$file" ]]; then
    echo "File not found: $file"
    exit 1


echo "static unsigned char $cname[] = {"
hexdump -v -e '" " 16/1 "  0x%02x, " "\n"' $file | \
   sed -e '$s/0x  ,//g'
echo "};"

PS This script also appears in a reply to the original post.


Mitch Frazier is an Associate Editor for Linux Journal.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Another option is using xxd

Anonymous's picture

Another option is using xxd -i. xxd is part of the vim package.


Anonymous's picture

very interesting

Geek Guide
The DevOps Toolbox

Tools and Technologies for Scale and Reliability
by Linux Journal Editor Bill Childers

Get your free copy today

Sponsored by IBM

8 Signs You're Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
On Demand
Moderated by Linux Journal Contributor Mike Diehl

Sign up and watch now

Sponsored by Skybot