Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
🛕Project to save Balinese Uluwatu temple nears completion
🪨 A seawall project to combat cracks in the cliffs at the Pura Luhur Uluwatu temple in Pechatu village is almost complete.
🏗 Builders report that progress has reached 83% and completion is scheduled for early February 2025.
🌊 The project is facing major challenges due to the choppy ocean: work has now reached the headland at the very end, which is directly below the Luhur Uluwatu temple.
ℹ️ This temple is one of the most famous religious sites in Bali, and it is also popular with tourists due to its scenic and spectacular location. After it was realized that the rock on which the temple is located was in danger of collapsing from erosion, a plan was devised to save the rock.
@BaliNews
#places#reconstruction#Pechatu
#rust#gaussian_splatting#graphics#reconstruction
Brush is a powerful 3D reconstruction tool that uses Gaussian splatting to create high-quality 3D scenes. It works on many devices and systems, including macOS, Windows, Linux, Android, and even in web browsers like Chrome, without needing complex setups or heavy dependencies. You can train models interactively with your own images, view 3D scenes, and use it via a simple command-line interface. This makes it easy to create, explore, and share 3D content quickly and on almost any device, benefiting users by providing accessible, fast, and flexible 3D reconstruction technology for developers, artists, and researchers.
https://github.com/ArthurBrussee/brush
🚀 European Defense Stocks Decline Amid Ukraine-Russia Peace Deal Hopes
European defense stocks experienced a downturn on Friday following remarks from a senior Ukrainian official indicating advancements in peace negotiations with Russia. Bloomberg posted on X, highlighting the market's reaction to the potential for a ceasefire. Meanwhile, construction companies saw an uptick, driven by expectations that a peace agreement could lead to a surge in post-war reconstruction efforts. The developments have sparked optimism in the construction sector, anticipating increased demand for rebuilding infrastructure in the aftermath of the conflict.
#EuropeanDefense#Stocks#Ukraine#Russia#PeaceDeal#Construction#Reconstruction#MarketReaction
Фрагмент стены (К3) погребальной камеры (К) с иероглифами перед третьими вратами. Часть текста 144 главы книги мёртвых. Фото Артём Гизун
#qv66#nefertari#egypt#tomb#reconstruction#photoshop#3ds#3dsmax#3dmax#egyptology#architecture#ancient#antique#hieroglyphs#valleyofqueens#queensvalley#future#heritage#travel#followme
nefertaritomb.com
Винтажная открытка. Один из четырёх столбов с изображениями столба Джед и Осириса (Кс4-Кс3). На фоне стен (К1-К3) погребальной камеры (К) с текстами и изображениями 144 главы книги мёртвых.
#qv66#nefertari#egypt#tomb#reconstruction#photoshop#3ds#3dsmax#3dmax#egyptology#architecture#ancient#antique#hieroglyphs#valleyofqueens#queensvalley#future#heritage#travel#followme
nefertaritomb.com
Процесс строительства гробницы Нефертари, иллюстрация из книги Nefertari e la valle delle Regine Christian Leblanc, Alberto Siliotti.
Рекомендую смотреть на изображение справа налево. Сначала высекалась горная порода, затем наносился слой штукатурки, поверх которой жрец наносил эскизы необходимых ритуальных сцен и тексты к ним контурами красного цвета. После этого начинали работать художники, они рисовали итоговые, детально проработанные изображения чёрным цветом для скульпторов. Те, в свою очередь, по штукатурке вырезали все сцены стен гробницы, придавая рельеф и объём, который в итоге был раскрашен художниками.
#qv66#nefertari#egypt#tomb#reconstruction#photoshop#3ds#3dsmax#3dmax#egyptology#architecture#ancient#antique#hieroglyphs#valleyofqueens#queensvalley#future#heritage#travel#followme
nefertaritomb.com
Художественное представление о строительстве гробницы Нефертари. На изображении не учитывается хронологически и технологических ход проведения работы. Просто красивая картинка из сети Интернет. В следующем посте будет другая иллюстрация с учётом технологии строительства гробницы.
#qv66#nefertari#egypt#tomb#reconstruction#photoshop#3ds#3dsmax#3dmax#egyptology#architecture#ancient#antique#hieroglyphs#valleyofqueens#queensvalley#future#heritage#travel#followme
nefertaritomb.com
Письмо Нефертари Хеттской царице Пудухепе.
Великая Царица Наптера (Нефертари) земли Египетской говорит так: «Говорю сестре моей Падухепе, Великой Царице земли Хеттской. Я, сестра твоя, (и ты) будь благополучна! Да будет страна твоя благополучна. Ныне узнала я, что ты, сестра моя, написала мне, осведомляясь о здоровье моём. Написала ты мне из-за доброй дружбы, и братские отношения между братом твоим, царём Египта Великим, и Богом Бурь принесут мир, и сделает он братские отношения между царём Египта, Великим Царём, и его братом, царём Хеттов, Великим Царём, вечными… Видишь, послала я тебе дар, дабы приветствовать тебя, сестра моя… для шеи твоей (ожерелье) из чистого золота, собранное из 12 рядов весом в 88 сиклей, цветной лён маклалу для одного царского одеяния для царя… Всего 12 льняных одеяний».*
*Перевод с английского Анна Конькова-Никитина
#qv66#nefertari#egypt#tomb#reconstruction#photoshop#3ds#3dsmax#3dmax#egyptology#architecture#ancient#antique#hieroglyphs#valleyofqueens#queensvalley#future#heritage#travel#followme
nefertaritomb.com
Имя Нефертари на Аккадском, международном языке древнего мира времён Нового Царства.
#qv66#nefertari#egypt#tomb#reconstruction#photoshop#3ds#3dsmax#3dmax#egyptology#architecture#ancient#antique#hieroglyphs#valleyofqueens#queensvalley#future#heritage#travel#followme
nefertaritomb.com