#!/usr/bin/env python3 import argparse import random import os import sys import time import subprocess from pathlib import Path from multiprocessing import Pool from weakref import finalize def print_carray(f, payload): while len(payload) > 0: f.write('\n ') f.write(', '.join('0x{:02x}'.format(x) for x in payload[0:16])) f.write(',') payload = payload[16:] f.write('\n') def main(): parser = argparse.ArgumentParser(description='Convert binary files to C array format') parser.add_argument('files', nargs='+', help='Binary files to convert') args = parser.parse_args() files = args.files for fin_name in files: if not os.path.isfile(fin_name): print(f"File {fin_name} does not exist") continue with open(fin_name, 'rb') as fin: contents = fin.read() fout_name = fin_name + '.h' with open(fout_name, 'w') as fout: print(f"Converting {fin_name} to {fout_name}") fout.write(f'enum {{ BINDATA_LEN = {len(contents)} }};\n') fout.write(f'const size_t bindata_len = BINDATA_LEN;\n') fout.write(f'const uint8_t bindata[] __attribute__((aligned(16))) = {{') print_carray(fout, contents) fout.write('};\n') if __name__ == '__main__': sys.exit(main())