Можно ли в 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
WAKANDA : THE REBIRTH
ВТОРОЙ СПЕЦИАЛЬНЫЙ ГОСТЬ: PLANAS ИЗ КУБЫ! 🇨🇺
Мы не останавливаемся на достигнутом! Представляем второго артиста, который взорвет ваш музыкальный мир:
PLANAS — легендарный кубинский перкуссионист, который добавит в наш вечер огненные латинские ритмы и невероятную энергетику! Его выступление — это настоящая магия живого звука, которая заставит танцевать даже тех, кто этого не планировал! 💃🕺
⚡ УСПЕЙТЕ ЗАБРОНИРОВАТЬ ВЫГОДНО!
Уже в ПОНЕДЕЛЬНИК цены на билеты вырастут! Это ваш последний шанс посетить вечеринку по самой приятной цене!
https://spb.qtickets.events/198961-santa-barbara-x-wakanda
🎫 Early Bird билеты еще в продаже, но их осталось совсем немного!
#wakanda#rebirth
Так у нас ещё одна дата премьеры оглашена, «Возвращение из Ледяного озера» стартует 8 апреля.
Ну, думаю, про сон на апрель можно официально забить.
#Возрождениеизледяногоозера#Rebirth
Завершились съёмки «Возрождение из ледяного озера | Rebirth». Это сиквел «Легенды о Чу Цяо», и я не до конца разобралась, можно ли смотреть «Возрождение», не смотря при этом «Легенду». Ну, начну смотреть, если не пойму, то пойду уже в первую дораму.
Из интересного: «Легенда о Чу Цяо» и «Возрождение из ледяного озера» сняты по новелле «Секретный агент принцесса Чу Цяо» Сяосян Дунъэр, которую у нас готовит к выходу издательство Freedom.
#Любопытный_сериальчик#Возрождениеизледяногоозера#Rebirth
Посмотрела первые 3 серии «Возрождения Ледяного озера». Это, знаете, из разряда «А давайте выдадим всю жесть сразу же».
Уже в первой серии, когда одного из главных героев заставляют смотреть на отрубленные головы родных и признавать в них предателей, становится ясно: на позитив можно не рассчитывать. Слово «боль» здесь меркнет. В этот момент я кожей чувствую, почему его единственное желание — утопить этот мир в крови.
В общем, кто ещё не начал, готовьтесь, это будет тяжелая история.
Что касается вопроса «а поймут ли те, кто не смотрел первую часть?» — я как раз в их числе. Создатели реально заморочились для нас. Они не вываливают лор кирпичом, а дозированно вплетают экспозицию в действие: уже в первой серии кратко объясняют, кто кого за что ненавидит, у кого какие отношения, а потом понемногу докидывают флешбэки, расширяя картину. Непоняток нет.
Конечно, мы не получим такого глубокого бэкграунда, как те, кто смотрел первую часть. Для кого-то это просадка. Для меня пока не понятно, но мы, зрители-новички, можем ярко прочувствовать недоверие главной героини ко всему, что происходит, потому что она забыла всё, что было.
#Возрождениеизледяногоозера#Rebirth#Возрождение_из_ледяного_озера
After this reset, you will begin the New Earth timeline with new belief systems will guide you. But that is in the future.
For today, create boundaries with both the past and the future so you can simply be in this here and now moment.
The past no longer defines you. The future is what you decide upon.
Yah bless 🌹 Love Carolyn
✨ Get your FREE Quantum Energy Balancing & Tune-up https://www.144godcode.com/freebie
#timeline#newearth#reset#rebirth#therealyou #144000 #144GODCODE#APTTMH
Март подходит к концу, а значит, пора выбирать, на чем будем фиксировать свое внимание в апреле.
Первая — это, конечно, «Любовь за гранью смерти / Love Beyond the Grave», показ которой начнется 28 марта.
Дальше многострадальная «Завеса теней / Veil of Shadows»: то ли выйдет она в апреле, то ли не выйдет. Каждый день вокруг нее проблемы и слухи. Но я верю в что выйдет.
Ещё обещают в начале апреля «Возрождение из ледяного озера / Rebirth», склонна в это верить, уж много за последнее время контента по ней пошло.
Также проскальзывают слухи о выходе «Чаша весны / Cup of Spring», можно сказать, что её вообще не жду, но сейчас читаю новеллу, по которой она снята, и мне просто любопытно заглянуть в дорамку.
Ну и конечно, «Призрачный божественный сыщик / Shadow Punisher», где снялся Ло Юньси, тоже обещают выпустить в апреле.
И единственное, что не в историческом сеттинге, это «Исповедь в темноте / Light to the Night». Детектив, чтоб разбавить эту вечеринку халатиков.
#Любопытный_сериальчик#Любовьзаграньюсмерти#LoveBeyondtheGrave#Завесатеней#VeilofShadows#Возрождениеизледяногоозера#Rebirth#Чашавесны#CupofSpring#Призрачныйбожественныйсыщик#ShadowPunisher#Исповедьвтемноте#LighttotheNight