pythonでバイナリファイル作成と並べ替え

pythonでバイナリファイルを作成したり、上詰めされたRGBのデータを取り出すなど。

from sys import byteorder

print ("change binary data")

hsize = 2
vsize = 8192
data_size = hsize * vsize
element_per_pixel = 12
lower_assign = 2
byte_per_element = 2

with open('test.bin','wb') as f:
    for value in range(data_size):
        n = value << lower_assign
        b = n.to_bytes(byte_per_element,byteorder)
        for element in range(element_per_pixel):
            f.write(b)

with open('test.bin','rb') as f:
    data = f.read(byte_per_element)
    cnt = 0
    data_list = []
    while data:
        pixel_data = 0
        for element in range(element_per_pixel):
            n = int.from_bytes(data,byteorder)
            n = n >> lower_assign
            pixel_data += n<<(element*(byte_per_element*8-2))
        data_list.append(pixel_data)
        data = f.read(byte_per_element)
        cnt += 1

with open('data.csv','w') as f:
    for data in data_list:
        f.write(hex(data)+"\n")