Можно ли в 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
Год только начался, а уже принес кучу удивительных событий. Например - компания BMW China внезапно взяла и снизила цены в Китае более чем на 30 моделей. По ссылке можно ознакомиться с ценниками.
Это приятно, все рады, кроме тех кто купил BMW в декабре. Тогда X6 xDrive40i стоил 124 тыс долл, а сейчас уже 102. Наверное это досадно.
Парадоксально, но нас это касается, потому что отчасти компенсирует повышение утиль сбора. Кстати в Китай можно поехать без визы. Наверное BMW на наших дорогах станет больше.
Имеем ввиду - 🤝
Спасибо, познавательно - 👍
#bmw
🚘 Rolls-Royce unveiled the Project Nightingale
🔎 24-inch wheels, an open-top design, and a “starlight” interior across the entire cabin — it looks straight out of the future. The car features two electric motors. Exact specs are still under wraps, but total output is expected to be at least 577 hp.
💸 Only 100 units will be produced. Estimated starting price — from $1 million.
#BMW@Car_News
✨Rolls-Royce Cullinan Highlights
💰 The price of the Rolls-Royce Cullinan depends heavily on configuration and customization (and the possibilities are almost limitless). Approximate pricing:
• Starting from $410,000 (~€380–400K) for the base model
• Most real-world builds: $450,000 – $550,000+
• In Europe: around €530,000 – €800,000+
#BMW@autolist
🚘 Rolls-Royce представили Project Nightingale
🔎 24-дюймовые колёса, два электромотора, открытый верх и «звёздное небо» по всему салону. Точные характеристики пока держатся в секрете, но суммарная мощность ожидается не менее 577 л.с.
💸 Всего выпустят 100 экземпляров. Ожидаемая стартовая цена – от $1 млн.
#BMW🚘Автоновости
📸BMW iX1 facelift spotted during testing
📰 BMW has been spotted testing an updated version of the iX1 electric crossover. The model, which debuted in 2022, is expected to receive a mid-cycle refresh with design updates influenced by the Neue Klasse styling direction.
🔎 Prototypes indicate revisions to the front fascia, including new lighting elements and a more streamlined appearance. The updated iX1 may also incorporate selected technologies and design features from the upcoming iX3, potentially improving efficiency and charging performance. Further details are expected closer to the model’s official debut.
#BMW@Car_News
📰 Updated BMW 7 Series will keep its signature “kidney” grille
🚘 BMW has released the first teaser of the facelifted 7 Series. The flagship sedan will make its debut in April at the Beijing Auto Show.
🔎 Judging by the teaser image, the model will retain its large signature kidney grille, although its shape will be revised and appear even more prominent. The front-end design and lighting signature will also be updated.
🐎 Technical details have not yet been revealed. BMW says the scope of the update will be significant – almost comparable to developing a new generation of the model.
#BMW@Car_News
✨ Фишки Rolls-Royce Cullinan
💰 Цена Rolls-Royce Cullinan сильно зависит от комплектации и уровня кастомизации (а возможности здесь практически безграничны):
• От $410,000 (~€380–400 тыс.) за базовую версию
• Чаще всего реальные конфигурации: $450,000 – $550,000+
• В Европе: примерно €530,000 – €800,000+
#BMW🚘Автоновости
📸 Обновлённый BMW iX1 заметили на тестах
📰 BMW был замечен во время испытаний обновлённой версии электрического кроссовера iX1. Модель, дебютировавшая в 2022 году, получит плановый рестайлинг с элементами дизайна в стиле Neue Klasse.
🔎 Прототипы указывают на изменения передней части: новая светотехника и более обтекаемый внешний вид. Также ожидается, что обновлённый iX1 позаимствует некоторые технологии и дизайнерские решения у будущего iX3, что может улучшить эффективность и скорость зарядки. Дополнительные подробности появятся ближе к официальной премьере.
#BMW🚘Автоновости
📰 2027 BMW 7 серии сохранит фирменную решётку-«ноздри»
🚘 BMW опубликовала первый тизер рестайлинговой 7-й серии. Премьера флагманского седана состоится в апреле на автосалоне в Пекине.
🔎 Судя по тизеру, модель сохранит крупную фирменную решётку радиатора, однако её форма изменится и станет ещё более выразительной. Также обновят дизайн передней части и световую подпись.
🐎 Технические детали пока не раскрываются. В BMW отмечают, что масштаб обновлений будет значительным — почти сопоставимым с разработкой нового поколения модели.
#BMW🚘Автоновости
📰BMW discontinues three models — X4, Z4, and 8 Series
The reason is low demand and lack of justification for developing successors.
• BMW X4 (G02): Production of petrol versions ended on September 30, diesel versions will continue until the end of November. No new X4 is planned, but an electric BMW iX4 may appear.
• BMW Z4 (G29): The roadster, produced in Austria since 2018, will exit the market in spring 2026. No new Z4 is planned.
• BMW 8 Series (G14/G15/G16): The entire lineup — coupe, convertible, and Gran Coupe — has been discontinued. No new models under the 8 Series name are expected for now.
#BMW@Car_News
BMW в 2021 году показал IX - полностью электрический премиальный SUV, новая платформа. Два мотора, полный привод, 4-5 секунд до сотни и авангардный дизайн. В США его привезли, чтобы конкурировать с Tesla, и продавали за 90 тыс долл.
Продажи не превышали 15-20 тыс в год (у Х5 по 80 тыс ежегодно) и сейчас BMW их совсем прекратила. Победить в США электричеством в этот раз не получилось. BMW не сдается и повезет туда IX3, тоже электрический, но попроще.
IX - необычная, но по своему красивая. Непонятно из-за чего она провалилась, из-за электричества (хотя Tesla покупают) или из за внешности.
Из-за дизайна - 🤮
Из-за электричества - ⚡
И то и другое - 🤝
#bmw
BMW X7 — большой автомобиль, 5,17 м в длину. Идеален и для путешествий с семьей и для деловых поездок каждый день.
В Major Auto - новый BMW X7 xDrive 40d. Дизельный двигатель на 340 лс и 700 Нм, разгон на полном приводе - 6,1 сек до сотни.
Внешний и внутренний М пакет, диски 22", выхлоп М, стеклянная крыша, черный потолок, расширенная отделка салона кожей, доводчики дверей, вентиляция, массаж и подогрев передних сидений, подогрев задних, подлокотников и руля.
Цена - от 17,72 млн руб
Менеджер Кирилл @KirStar96.
#bmw