Можно ли в 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
Обонятельные луковицы мыши в наноскопическом разрешении. За этой видяшкой примерно петабайт (><) данных.
#expansion#microscopy
Экспансионная микроскопия позволяет добиться фантастического разрешения, но у неё есть, конечно проблемы. Одна из них неочевидная, пока об этом не задумываешься. Но логичная.
Образец становится большим. Иногда большим чем рабочая дистанция объективов, соответственно заметная часть нашего великолепного образца с нанотдетализацией остаётся за кадром.
Что делать если все таки хочется рассмотреть объект целиком?
Авторы статьи Mesoscale volumetric fluorescence imaging at nanoscale resolution by photochemical sectioning предложили интересное решение. Они сделали гель для экспансии такого состава, который разрушается под действием УФ, что позволило им нарезать (лазером) гель в процессе сьемки. Фактически они сделали оптический FIB (метод из электронной микроскопии, где образец нарезают пучком ионов).
В комментах видео с подробностями из твиттера автора статьи Ruixuan Gao
In the latest episode of DWF Chats, we hosted:
🔹Micky Watkins (Founder and CEO, World Mobile Group)
🔹Zachary Vann (Head of Token, World Mobile Token)
Hear more about WMT's scalability and their #expansion roadmap, the utility of WMT token and how you can get involved in WMT #community✨
Full interview here.
//
About:
▫World Mobile Token aims to build a #decentralised telecommunication network to deliver affordable, quality Internet access to the unconnected.
Visit http://worldmobiletoken.com to find out more.
🪐 The end of the universe is a cosmic puzzle with several real scenarios proposed by scientists, each based on clues from galaxies like Messier 87 and ancient light observed by telescopes. One idea is the "Big Bounce," where the universe’s expansion might someday reverse due to gravity, causing everything—including stars such as Betelgeuse and black holes like Sagittarius A*—to collapse back into an ultra-dense state, possibly leading to another cosmic cycle. Unlike the "Big Freeze" or "Big Rip," the "Big Bounce" is still debated, but it shows how the fate of the universe could depend on the balance between gravity and mysterious forces such as dark energy. ✨
#universe⚡#cosmology⚡#expansion⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 Over billions of years, the expansion of the universe—measured by observing distant galaxies like Messier 87—will stretch space so much that the light from other galaxies will eventually fade from view. Long after stars like our Sun burn out, only the dead remnants of stars and black holes will remain, and as cosmic expansion continues, even these may become isolated in a cold, dark universe, ending with silent emptiness. ✨
#universe⚡#fate⚡#expansion⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 The Sun, along with all stars in the Milky Way, will eventually run out of fuel and end as a white dwarf—a small, cool stellar remnant. Over trillions of years, even white dwarfs like the one in Messier 4 will cool and fade to black, leaving the universe filled with cold, dark remnants, while galaxies such as Andromeda drift farther apart as cosmic expansion continues. ✨
#universe⚡#fate⚡#expansion⚡#stars⚡#nasa⚡#galaxy⚡#astronomy⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 One of the great cosmic mysteries is how the universe will end, and scientists look to real clues from galaxies like Andromeda and stars such as the Sun to guide their ideas. Some theories suggest the universe might continue expanding forever, causing galaxies to drift so far apart that even light from Andromeda will never reach us again, while others consider whether the universe’s own gravity could eventually pull everything—stars, planets, and even black holes—back together in a colossal collapse, erasing all known cosmic structures. ✨
#universe⚡#fate⚡#expansion⚡#galaxies⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
寒蝉鸣泣之时 虚崩篇
▎介绍
■■ <注意>.
不提供任何担保。 请自行承担使用风险。
日暮之夜 "的版权归 Circle 07th_Expansion 所有。
日暮之夜 "的版权归 Circle 07th_Expansion 所有。
Mui Mui Mui 制作的文库。 使用 Mui Mui 制作的文库 (
http://d.hatena.ne.jp/eiji8pou/20050914/1126709682)。
该库的版权归 Mui Mui 所有。 资料库版权归 Mui Mui 所有。
世界设定。
节日音乐版和碎片旋转后的世界。
如果没有玩过林松里版,故事可能会显得跳跃。
古特家族的设定与主家族有明显不同。
故事的主角是敬岚和敬石。 (故事是关于敬岚和敬志的)。
有仇恨! 注意事项
▎获取
PC仓库
▎标签
系统:#PC
类型:#galgame#NSWF#汉化
系列:#寒蝉鸣泣之时
出版:#Expansion