Можно ли в 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
Ну что, настала пора корпоративов и новогодних вечеринок! 🎊💃
И я тут как тут с новой новогодней коллекцией от PupaNight Heroes✨
Обожаю вот это все сияние, блеск и роскошь, а здесь каждый продукт именно об этом ✨
Палетки теней Night Heroes в оттенках 001 и 002 — блеск чистой воды! То что нужно тем, кто обожает влажный эффект на глазах. На 100% состоят из блеска и роскоши! Наносятся и тушуются элементарно, хоть пальчиком, хоть кистью!
Запеченые румяна — в самом любимом моем оттенке и самой любой светоотражающей текстуре! Переборщить невозможно, щечки будут наливное яблочко
Запеченый хайлайтер — идеален для тех, кто любит, чтобы щечки были еще и натерты до блеска))) серьезно, если хотите блистать так, чтобы ваш краш не мог отвести взгляд с другого конца зала, этот продукт для вас!
Жидкий хайлайтер Night Heroes— капли просто идеален на тело! Они растекаются как тысячи маленьких бриллиантов, невероятно красиво! Декольте, руки, ноги.. советую наносить на все открытые участки кожи и блистать
Блеск — масло оказалось совершенно не липким! Очень комфортен на губах и можно делать красивый эффект глянцевых губ поверх любого покрытия. Будет сочно))
Ну и как я уже сказала на видео, карандаш — помада Pupa Vamp! Creamy Duo (оттенки 013 и 014) мой личный фаворит и уже в косметичке! Идеальный для меня оттенок нюда и идеальная для меня текстура: мягкая, увлажняющая, которая совершенно не подчеркивает никакие сухости губ, что зимой актуально
Спрей — фиксатор Night Heroes в завершении макияжа, чтобы вы могли танцевать до утра и не думать, что ваш макияж куда-то «уполз».
Ну и конечно, обратите внимание на косметичку с тушью Vamp! Lash Extender в оттенке 112 и черным карандашом Multiplay eye pencil в оттенке 09. Мне кажется идеальным презентом подружкам на Новый год! Тот самый подарок, который точно не будет стоять без дела))) к слову, карандаш действительно мягко и равномерно наносится и превосходно тушуется в одно движение, идеален для межречнички и основы под какой-то яркий макияж. А тушь делает классные и очень черные ресницы, то, что нужно!
Берите на заметку и пробуйте на ваши декабрьские вечеринки, уверена, вы покорите всех ❤️
#MAKEUPKIT#PUPAXMAS
Сладульки, привет!
Несу вам видео с нарядным шайнбрайтлайкэдаймонд макияжем, который я создала коллекцией Night Heroes от Pupa✨
Коллекция вышла классная - то, что нужно перед Новым годом для создания настроения. Куча блесток, яркие праздничные оттенки, ну и, конечно, баночки из коллекции могут стать отличным подарком подружкам, мамам, сестрам, коллегам (только любимым).
Палетки теней Night Heroes в оттенках 001 и 002 - состоят только из сияющих сатиновых оттенков и спарклов. Очень мягкие шелковистые тени, хорошо наносятся даже пальцем, а яркие оттенки легко растушевываются.
Жидкий хайлайтер-капли Night Heroes с очень крупными яркими блестками, красиво смотрится на теле, я даже пожалела, что для видео выбрала именно этот более закрытый топ, но размер блесточек можно оценить на свотче на руке.
Запеченые румяна из коллекции имеют очень деликатное сияние и полупрозрачную пигментацию, поэтому с ними невозможно переборщить, особенно, если использовать более воздушно набитые кисти.
Запеченый хайлайтер понравится тем, кто любит яркое выразительное сияние.
Блеск-масло с блестками стал моим фаворитом, теперь наношу его сверху на любой карандаш или соло - он очень красивый и комфортный на губах.
Также на видео использовала Pupa Vamp! Creamy Duo в оттенках 013 и 014 - это двусторонний продукт для губ, где одна сторона - карандаш, другая - кремовая сатиновая помада. Два базовых нюдовых продукта для губ, присмотритесь.
Спрей-фиксатор Night Heroes помогает не только зафиксировать макияж, но и освежить кожу в течение дня и вечера. Когда кремовые продукты немного «собираются» в мимических морщинках, я всегда увлажняю лицо фиксирующим спреем и расправляю излишки прямо пальчиком.
Ну и классная идея для подарка - небольшая косметичка (идеальная для сумочки), внутри которой спрятались универсальный мягкий черный карандаш Minimultiplay eye pencil в оттенке 09 (для дымчатых стрелок, смоки - супер, он легко и быстро тушуется) и одна из моих самых любимых тушей Vamp! Lash Extender в оттенке 112, с которой я всегда получаю больше всего вопросов «что за тушь?» и комплиментов ресницам.
В общем, бегом сиять и блестеть! Когда еще, если не сейчас?
#MAKEUPKIT#PUPAXMAS
Девочки, пора задумываться о том, как мы будем выглядеть в новогоднюю ночь!🎄🫦
Делюсь с вами продуктами из коллекции Hight Heroes от PUPA для идеального праздничного макияжа:
палетки теней 001 Wonder Girl и 002 True Queen - идеальные яркие и ультра-сияющие цветовые сочетания для эффектного макияжа глаз
сияющие капли для лица и зоны декольте - придают сверкающее сияние, обеспечивая длительный результат
хайлайтер - идеально ложится на кожу, подчеркивая черты лица
сияющие румяна - мгновенно сливаются с кожей и деликатно улучшают цвет лица
масло для губ - обволакивает и питает губы, придавая им нежный перламутровый оттенок
карандаш-помада Vamp! Creamy Duo с полноцветным покрытием - создает эффект визуального увеличения губ
сияющий спрей для лица - создает ощущение, похожее на ультратонкое облако, которое мгновенно увлажняет кожу
Подарочный набор с черным карандашом Multiplay и тушью Vamp! Lash Extender в составе: тушь - идеально удлиняет и подкручивает ресницы. Карандаш для глаз - обеспечивает интенсивные цвет, благодаря эксклюзивной кремовой текстуре
Вдохновляйтесь и создавайте образ с PUPA
#pupamilanorussia#pupalovers#MAKEUPKIT#PUPAXMAS
Реклама, ООО «Космотрейд», ИНН: 7725628885, erid: 2VtzqwfUSbs