0

I'm trying to decode a binary file so that I can get a better look at how it's created. I'm trying to read it in using open(file, 'rb') and then write the converted text to .txt file. I can't seem to find a method that writes the text out in a format that I can understand. Are all binary converted the same way?

import os

def read(inputFile, outputFile):
    
    if os.path.exists(outputFile):
        os.remove(outputFile) 
    o = open(outputFile, "a")

    with open(inputFile, "rb") as i:
        while (byte := i.read(1)):
            #mapped = map(ord, byte)
            o.write(str(byte))

read('triangle.shp', 'test.txt')

Here is the triangle.shp file that I am trying to convert. I think that it was created using C

The output file looks like this

b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\xe0'b'\xff'b'\xff'b'\xdf'b'?'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'h'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'@'b'x'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'n'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'n'b'@'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x02'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'

This is what I was told about the file

Its a somewhat basic file format if you're OK with these things, its a little messy in value ranges and mixed data types, but it's somewhat simple (headerless etc).

typedef struct Shape_Saving_type
    {
        double val_curve[64];
        double val_EnvX[64];
        double val_EnvY[64];
        double reserved[64];
        char CurrentNumPoints;
        unsigned char Shapeversion;  //well, good for 255 versions ;)
        char padding[6]; //padding[0] set to 1 indicates LFOTOol 1.5 (vector) sizes
              
    }Chunk_Shape_Saving;

You should fill with these values:

val_curve[] = 0 to 1

val_EnvX[] = 0 to 388.0 range

val_EnvY[] = 0 to 240.0 range

reserved[] fill with 0.0

CurrentNumPoints is self explanatory

Shapeversion = 1;

padding[] fill with 0.0

Sam
  • 1,765
  • 11
  • 82
  • 176
  • For a binary file that looks completely reasonable. It doesn't appear to be a text file created with some bizarre encoding. You'll need to get more information on how the file was created. – Mark Ransom Nov 15 '20 at 20:51
  • If the file was purely a string encoded into binary, this might help: https://stackoverflow.com/questions/40557335/binary-to-string-text-in-python. But as Mark said you need more info. – Keivan Nov 15 '20 at 20:52
  • All files are binary, even if their name ends with `.txt`. – Ulrich Eckhardt Nov 15 '20 at 20:58
  • @MarkRansom I added all I know about the file so far – Sam Nov 15 '20 at 20:59
  • @Keivan I added all I know about the file so far – Sam Nov 15 '20 at 21:00
  • I was hoping with the .shp extension it might be a [Shapefile](https://en.wikipedia.org/wiki/Shapefile#Shapefile_shape_format_(.shp)) but based on the information you added it appears it isn't. – Mark Ransom Nov 15 '20 at 21:01
  • @MarkRansom It is not, it's a custom file to the software I'm using apparently. The software is [serum](https://xferrecords.com/products/serum) – Sam Nov 15 '20 at 21:02
  • @UlrichEckhardt while that may technically be true, there's a useful distinction that can be made. – Mark Ransom Nov 15 '20 at 21:02
  • So I assume that the file is made from serialization of the structure. Depending on how the serialization is done, it is not easy to convert it to text. For example some libraries like boost save the vector length with the vector. So the first byte is always the vector length. – Keivan Nov 15 '20 at 21:18

1 Answers1

1

You should use the struct module to deal with converting binary information. For example to read the val_curve values:

import struct
bin = input_file.read(64*8)  # doubles are each 8 bytes
val_curve = struct.unpack('64d', bin)
Mark Ransom
  • 299,747
  • 42
  • 398
  • 622
  • I'm not trying to look at the individual values, I'm trying to look at the whole file so that I have an example for how to create one of these files myself, which I'm starting to think might involve creating a struct using that module, and then converting that struct to binary – Sam Nov 15 '20 at 21:11
  • @Sam well your question definitely says you're trying to read the file and write out a text version of it. Once you've done that it should be relatively easy to reverse the process for writing your binary file. – Mark Ransom Nov 16 '20 at 00:24
  • I meant that it looks like you’re only reading one variable, whereas I would like to read the whole file exactly the way it is structured – Sam Nov 16 '20 at 00:34
  • @Sam doesn't my answer give you enough information to figure that out on your own? – Mark Ransom Nov 16 '20 at 00:43