Created
September 6, 2024 21:36
-
-
Save romanbsd/c4d84ebbf054419ebdd5a3dba338b40d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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