Skip to content

Instantly share code, notes, and snippets.

@romanbsd
Created September 6, 2024 21:36
Show Gist options
  • Save romanbsd/c4d84ebbf054419ebdd5a3dba338b40d to your computer and use it in GitHub Desktop.
Save romanbsd/c4d84ebbf054419ebdd5a3dba338b40d to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import os
def generate_header_file(input_file):
# Read binary data from input file
with open(input_file, "rb") as f:
data = f.read()
# Create header file name
file_name, _ = os.path.splitext(input_file)
header_file = file_name + ".h"
# Write to header file
with open(header_file, "w") as f:
# Write array declaration
f.write(
"const unsigned char {}[{}] = {{\n ".format(
os.path.basename(file_name), len(data)
)
)
# Write array elements
bytes_per_line = 0
for byte in data:
# Write byte value
f.write("0x{:02X}, ".format(byte))
bytes_per_line += 1
# Start a new line if 80 characters reached
if bytes_per_line == 20: # 20 bytes per line = 80 characters
f.write("\n ")
bytes_per_line = 0
# Close array declaration
f.write("\n};\n")
print("Header file '{}' generated successfully.".format(header_file))
if __name__ == "__main__":
import sys
if len(sys.argv) != 2:
raise ValueError
generate_header_file(sys.argv[1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment