Извините, если это повторяющийся вопрос, я довольно плохо знаком с Python и не знаю полностью номенклатуру, поэтому трудно найти решения.
Я пытаюсь написать код, который выводитдвоичный файл в определенных целочисленных форматах, то есть раздел в 8 битах, затем 32-битный и т. д. Более конкретно, в формате STL;наброски можно прочитать здесь: Википедия .
Я попытался сделать простой f.write(struct.pack(DATA))
для создания выходного файла, однако конечный результат - поврежденный файл. STL имеет версию ASCII;который у меня работает. Поэтому я предполагаю, что что-то не так с генерацией двоичного файла. Я хочу использовать двоичный файл для значительного уменьшения размера файла.
Я предполагаю, что выходной код будет выглядеть примерно так *:
import struct
f = open('cool_filename.stl', 'wb')
f.write(struct.pack(head, format=UINT8))
f.write(struct.pack(num, format=UINT32))
for i in range(0, num):
f.write(struct.pack(normal, format=REAL32))
f.write(struct.pack(vert1, format=REAL32))
f.write(struct.pack(vert2, format=REAL32))
f.write(struct.pack(vert3, format=REAL32))
f.write(struct.pack(attr, format=UINT16))
f.close()
Полезные ссылки:
struct.pack docs
спецификации формата
Я думаю, что ответ можно найти в последней ссылке выше, но я не совсем понимаю, какиспользуй это. После этого я попытался использовать struct.pack(I32, DATA)
для форматирования 32-байтовых разделов без знака и аналогичного кода для остальных, но это не работает.
* Следует отметить, что это не работает,Код здесь, чтобы показать изменения формата