Можно ли в 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
MADE IT POP ⚡️
Damn, этот молодой человек устанавливает рекорды быстрее, чем заканчивается тинт в третьем оттенке..
Новый день – новый повод напомнить всем о макияже на песню, занявшую первое место в чарте Billboard Hot 100 💅🏻💅🏻💅🏻
Стэним легенду вместе с нашими легендарными маркерами #makeitpop в новых вкусных цветах 👀
❤️
#sodalovesbts
А мы продолжаем вдохновляться Клубом Романтики и сегодня воссоздаем образ Мими💘
Мими — настоящая бестия и стихия, но зато с ней точно не соскучишься 🌪
Ее образ подчеркивает ее страстную натуру: драматичное сочетание накладных ресниц, черной подводки-маркера #makeitpop и жидкой матовой помады в смелом сливовом оттенке 009 Cheeky Queen 💋
Ну и куда же без аксессуаров? Мими сложно представить без ее цепей (например, ожерелья Chain 3-in-1), а черные сережки heart in fire словно были созданы для нее! 🖤⚡️
#sodalovesgames
Мало кто знает (реально мало, аниме-то примерно миллион лет), но сегодня день рождения у одной чудесной шиноби – Сакуры Харуно 🌸
Мы как адепты розового цвета не можем пройти мимо, поэтому по такому чудесному поводу давай вспомним все упоминания сакуры в наших продуктах:
✨ Бальзам для губ #nogravity в первом оттенке Sakura
✨ Парфюм Cherry Neko (вдруг кто не знает, что сакура – это вишня)
✨ Та самая популярная масочка для лица «Сакура – увлажняющая и освежающая»
✨ Подводка-маркер для глаз #makeitpop в одиннадцатом оттенке Sakura Kiss
✨ Оттенок sakura в новой палетке Kawaii
Вспомнишь что-нибудь ещё?
😌
#sodalovesanime
Романтики, сегодня мы отправимся в параллельный мир, куда заключили в наказание нашу героиню, Селену 🔮 Мы решили разобрать один из ее самых ярких и смелых образов — узнаете, откуда? 👀
Сначала — контуринг! Нам понадобится палетка для лица Coffee magic в оттенке 001 (светлая). Для бровей и веснушек возьмем ультратонкий карандаш #browpurrfection — с ним веснушки будут смотреться естественне 💅
В макияже глаз — максимальная драма, поэтому берем палетку теней с самыми насыщенными оттенками Into the unknown #showyourself и конечно же подводку-маркер под стать: #makeitpop в оттенке 101 Black cult ❤️🔥 Завершим образ яркой, насыщенной жидкой матовой помадой #matteaboutyou 005 Be bright 💋
#sodalovesgames
Мы уже разобрали образ Андреа из Ярости титанов, а сегодня — наша версия макияжа Хизер, богини красоты и любви ❤
Нам понадобится палетка теней сразу с несколькими сочными розовыми оттенками — Galaxy cake 001 Pink cake 🧁 Они подчеркнут зеленые глаза Хизер и будут красиво перекликаться с розовыми волосами героини. Для лица возьмем нежные румяна в стике #dabitonyourface, а для губ — бальзам-кристалл #mermaidlips в оттенке 004 Cherry love 🍒
Самое романтичное сочетание? 🤔 Розовый и блестки!💘 Как, например, комбо жидкой подводки для глаз с блёстками 103 Keith и глиттер геля для лица и тела #bizarreshine 002 Leo. То, что нужно для волшебного сияния ✨
А если чувствуешь, будто не хватает какого-то милого акцента, то поставь печатку маркером для глаз в форме сердца #makeitpop❤
#sodalovesgames
Романтики, сегодня разбираем образ Мии, как вы и просили 👀
У героини очень дерзкий образ, можно даже сказать, она женщина-вамп 🤭
Весь образ строится на сильных контрастах, поэтому для макияжа глаз мы возьмем палетку с насыщенными темными оттенками Into the unknown #showyourself❤️🔥 С ней можно сделать классический черно-дымчатый смоки, или поэкспериментировать и попробовать бордовые оттенки!
Естественные тени на лице подчеркнем контурингом в стике #easyskinny, чтобы структура лица выглядела более выраженной ⚡️
В качестве интересного акцента мы бы добавили полумесяц 🌙 с помощью маркера для глаз в форме луны #makeitpop — всё-таки она рожденная луной 🌚
Для губ идеально подойдет жидкая матовая помада #matteaboutyou в оттенке 006 Fall in love — темно-красная, насыщенная, вайб вампир 💋
Хорошим завершением образа будет лак для ногтей #glossyglow. Здесь выбор за вами: красный оттенок № 005 Arson или черный № 006 More 💅
Чьи образы Клуба Романтики нам разобрать следующими? 🐾
#sodalovesgames
RED♥️
Магнум опус Тейлор и самый осенний альбом 🍁 Поэтому выбираем палетку нюдовых, коричневых оттенков (Game over 002 Dream team) для нежной базы, а драму устроим с помощью черного макера для глаз #makeitpop и традиционной красной помады Тей Тей (мы возьмем #checkmatte 006 Maple syrup — напоминает тот самый 🧣 из All too well). Печатка в форме сердечка 🖤 немного Electra Heart Марины, но по вайбу подходит идеально ⚡
1989📸
📸 Нью-Йорк, Гарри Стайлз, girl squad... Это эра свободы в большом городе, приключений, жизни на полную катушку! Нужна яркая палетка в цветах эры (голубой/синий) — например, Sugoi #mangaeyes, обязательно глиттер #bizarreshine и космическое сияние хайлайтера в стике. Без красных губ никуда, но в этой эре возьмем более легкую текстуру — тинт на водной основе #cheekylips🍓 И мятный лак для более нежных образов 🍭
#sodalovespopculture#sodalovestaylorswift
Уже завтра выйдет новый альбом Тейлор Свифт Midnights 🕛⚡️
В ожидании и нетерпении, мы сделали подборку из фотосессий для Vogue, Harper’s Bazaar и официального промо в ретро эстетике нового альбома 🖤
Хочешь повторить эти образы? Сохраняй последнее фото — на нём всё, что тебе понадобится:
⭐️ Палетка Some things never change #showyourself — темно-синие и темно-зеленые, бежево-коричневые, сияющие цвета… ух! Сделают любой образ с фото гораздо глубже и интереснее!
⭐️ Тени для век Unicorn squad #unicornluv — для насыщенного, драматичного глэма 👄
⭐️ Карандаш для глаз #eyeloveunicorns — идеален для растушёвки и “смоки” эффекта
⭐️ Подводка-маркер для глаз #makeitpop — создаем крутые стрелки 😻
⭐️ Накладные ресницы с эффектом кукольного взгляда #dollyeyes — совсем как у Тейлор
⭐️ Глиттер гель #bizarreshine и жидкие тени #showyourself — ведь в Midnights эру мы все хотим сиять как Mirrorball 🪩
#sodalovespopculture#sodalovestaylorswift
Итак 👻
Перевоплотиться в Бастинду на Хэллоуин тебе помогут:
💚 Палетка теней Under the sea #exploretheocean
💚 Тени для век Unicorn squad #unicornluv 001
💚 Палетка теней Galaxy cake #sugarbabe 001 pink cake
💚 Сатиновая помада в стике #talkofthetown в оттенке 001 Mint tea
💚 Карандаш для глаз #eyeloveunicorns в оттенке 007 Forest Queen
💚 Подводка-маркер для глаз #makeitpop в оттенке 106 Rainforest
#sodalovespopculture#sodainspiration
It’s a cruel summer… with you🩷
Мы уже подобрали продукты к первым пяти эрам Тейлор здесь и здесь, а сегодня разберем оставшиеся пять! Итак, эры Тейлор (SODA's Version) 🌸
Reputation 🐍
Are you ready for it? Дерзкая, мне-все-равно-что-вы-обо-мне-думаете эра! Продукты эры: сатиновая помада в стике #talkofthetown в темном оттенке 005 Sweet cherry 🍒, жидкие тени #eyeloveyou в смелом оттенке getaway car 002 Fairy glow и много-много сияния с глиттером #bizarreshine и лаком для ногтей #starryglow 006 Aurora ⭐ А завершить образ можно черными сережками-молниями #sugargem⚡
Lover 💕
Самая милая, счастливая и влюбленная эра Тей — и все мы мечтаем однажды в ней оказаться 😭 Цвета соответствуют: пастельные, яркие, сияющие ✨ Продукты эры: палетка с критическим содержанием шиммера Galaxy cake 002 Blue cake, розовый глиттер #bizarreshine, розовый штампик-сердечко #makeitpop и те самые духи-кошка с их сладким ароматом и блестками 🐾 Аксессуары тоже кричат о любви — серьги heart in fire pink и набор колец pink 💘
#sodalovespopculture#sodalovestaylorswift