From 9564e0754854e723a79ebf12410853874fbf4cfd Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 26 Dec 2011 01:13:07 +0100 Subject: [PATCH] Add bin_to_header.py --- bin_to_header.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 bin_to_header.py diff --git a/bin_to_header.py b/bin_to_header.py new file mode 100644 index 0000000000..137a5b3728 --- /dev/null +++ b/bin_to_header.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +# Script to embed arbitrary binary files in C header files. + +CHARS_PER_LINE = 19 + +import sys +import os + +if len(sys.argv) != 3: + print("Embed binary files in C headers.") + print("Usage: ") + print(" bin_to_header.py infile outfile.h") + print("outfile.h will be overwritten with the new contents.") + sys.exit(1) + +infile_name = sys.argv[1] +outfile_name = sys.argv[2] + +varname = os.path.splitext(os.path.basename(outfile_name))[0] + +infile = open(infile_name, "rb") +outfile = open(outfile_name, "w") + +outfile.write("// Generated with " + " ".join(sys.argv) + "\n") +outfile.write("\nstatic const unsigned char " + varname + "[] = {\n") + +while True: + data = infile.read(CHARS_PER_LINE) + if len(data) == 0: + break + outfile.write(" ") + for c in data: + # make it work both in Python 2.x (c is str) and 3.x (c is int) + if type(c) != int: + c = ord(c) + outfile.write("{0:3},".format(c)) + outfile.write("\n") + +outfile.write("};\n") + +infile.close() +outfile.close()