4@brief Convert file string to zlib compressed C array 
    8@copyright Copyright (c) 2022 
   10https://nachtimwald.com/2019/10/09/python-binary-to-c-header/ 
   20def bin2cc(data: bytes, var_name: str) -> str:
 
   21    """Generate a C char array from bytes 
   23        data (bytes): The bytes 
   24        var_name (str): The C variable name 
   27        str: The string of C code 
   32    data = bytes(data, 
"UTF-8")
 
   33    data = zlib.compress(data, 9)
 
   35    data = data.hex(
" ", 1).split(
" ")
 
   38    out.append(f
"unsigned char {var_name}[] = {{")
 
   40    chunks = [data[i : i + LINE_LEN] 
for i 
in range(0, len(data), LINE_LEN)]
 
   44    for i, nums 
in enumerate(chunks):
 
   45        line = 
", ".join([f
"0x{c}" for c 
in nums])
 
   46        comma = 
"," if (i < len(chunks) - 1) 
else "" 
   47        padding_len = LINE_LEN - len(nums)
 
   48        out.append(f
"    {line}{comma}")
 
   51        out[len(out) - 1] += 
", 0x00" * padding_len
 
   54    out.append(f
"unsigned int {var_name}_pad_len = {len(data)+padding_len};")
 
   55    out.append(f
"unsigned int {var_name}_uncmp_len = {ulen};")
 
   56    out.append(f
"unsigned int {var_name}_len = {len(data)};")
 
   63    parser = argparse.ArgumentParser(description=
"Generate binary header output")
 
   64    parser.add_argument(
"-i", 
"--input", required=
True, help=
"Input file")
 
   65    parser.add_argument(
"-o", 
"--out", required=
True, help=
"Output file")
 
   66    parser.add_argument(
"-v", 
"--var", required=
True, help=
"Variable name to use in file")
 
   68    args = parser.parse_args()
 
   72    with open(args.input, 
"r", encoding=
"UTF-8") 
as file:
 
   75    out = 
bin2cc(data, args.var)
 
   76    with open(args.out, 
"w", encoding=
"UTF-8") 
as file:
 
   82if __name__ == 
"__main__":