46 lines
1.1 KiB
Python
Executable File
46 lines
1.1 KiB
Python
Executable File
#!env python
|
|
|
|
"""
|
|
Convert a file to a c array
|
|
bin2carray <output file> <input file>
|
|
"""
|
|
|
|
import os
|
|
import os.path
|
|
import sys
|
|
|
|
def main():
|
|
"""
|
|
Main script function
|
|
"""
|
|
if len(sys.argv) < 3:
|
|
return -1
|
|
|
|
source_file = sys.argv[2]
|
|
dest_file = sys.argv[1]
|
|
|
|
print(f'{source_file} --> {dest_file}')
|
|
|
|
with open(source_file, 'rb') as src:
|
|
data = src.read()
|
|
|
|
with open(dest_file, 'w', encoding='utf-8') as dest:
|
|
header_guard = '_' + os.path.basename(dest_file).replace('.', '_').replace('-', '_') + '_H_'
|
|
header_guard = header_guard.upper()
|
|
dest.write(f'#ifndef {header_guard}\n')
|
|
dest.write(f'#define {header_guard}\n')
|
|
dest.write(f'static const char binary_blob[{len(data)}] = {{\n')
|
|
for idx, current in enumerate(data, start=1):
|
|
if idx % 4 == 0:
|
|
dest.write(hex(current)+',\n')
|
|
else:
|
|
dest.write(hex(current)+',')
|
|
|
|
dest.write('};\n')
|
|
dest.write(f'#endif /* {header_guard} */\n')
|
|
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|