Можно ли в 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
ℹ️La rémunération de #Musk conditionnée par la colonisation de Mars
Selon Reuters, SpaceX a approuvé un plan de rémunération pour Elon Musk conditionné à des objectifs ambitieux, dont la création d’une colonie humaine sur Mars avec un million d’habitants. Le plan prévoit également le développement de centres de données dans l’espace et une valorisation de l’entreprise pouvant atteindre plusieurs milliers de milliards de dollars. Musk ne recevra ses actions que si ces objectifs sont atteints.
RT en français • Osez questionner !
Elon #Musk: “Per essere estremamente chiaro, indipendentemente da quanto io non sia d’accordo con la politica sull’Ucraina, Starlink non spegnerà mai i suoi terminali.
Sto semplicemente affermando che, senza Starlink, le linee ucraine crollerebbero, poiché i russi sono in grado di bloccare tutte le altre comunicazioni!
Non faremmo mai una cosa del genere né lo useremmo come merce di scambio.”
@UltimoraPolitics
😺Procès OpenAI : #Musk voulait 80 milliards de dollars pour coloniser Mars
Lors du procès opposant OpenAI à Elon Musk, le président de l’entreprise, Greg Brockman, a affirmé que Musk souhaitait obtenir le contrôle total d’OpenAI afin de lever jusqu’à 80 milliards de dollars pour construire une ville autonome sur Mars.
Le milliardaire réclame aujourd’hui 150 milliards de dollars de dommages dans cette affaire liée à la transformation d’OpenAI en société à but lucratif.
RT en français • Osez questionner !
ℹ️La rémunération de #Musk conditionnée par la colonisation de Mars
Selon Reuters, SpaceX a approuvé un plan de rémunération pour Elon Musk conditionné à des objectifs ambitieux, dont la création d’une colonie humaine sur Mars avec un million d’habitants. Le plan prévoit également le développement de centres de données dans l’espace et une valorisation de l’entreprise pouvant atteindre plusieurs milliers de milliards de dollars. Musk ne recevra ses actions que si ces objectifs sont atteints.
RT en français • Osez questionner !
🚀 Airdrop: MUSKGOLD
💰 Reward: 20,000 #Musk ~ $71.74
👥Refferal: 4,000 $MUSK ~ $14.348
🏆 Winners: All user are winnners
🚧 Presents Rating: ⭐️⭐️⭐️⭐️⭐️
🏦 Distribution Date: 16 September
🚨 Airdrop Link:Airdrop Page
📖 Step-by-step guide:
🔹 Complete all the tasks
🔹 Enter your information to the airdrop page.
🔹 Submit your ERC20 Wallet address
📑Information:#MUSK Gold is the “Gold of the Galaxy”, a decentralized, peer-to-peer digital asset.
‼️ Please remember: Please do your own research before joining to any airdrops project, also airdrop is 100% free.
相比从太阳到达地球的巨大能量...
ElonMusk的微博 (RSS)
相比从太阳到达地球的巨大能量,人类所利用的太阳能实在是微乎其微!
每平方公里的太阳能功率约为1GW。以目前的太阳能发电装置的能效比来看,每平方公里可产出约为200MW的发电功率。
换句话说,得州的一个小角落(铺满太阳能板)就能满足整个美国的用电需求。
The power used by humans is so tiny compared to how much power from the Sun reaches Earth!
Solar power is ~1GW per sq km. At current solar efficiency, net electrical power is ~200 MW per square km.
The entire United States can be powered by a small corner of Texas.
💭群组📮投稿🏷#Musk
可持续能源中的太阳能、风能发电取得了巨大进展。Su
ElonMusk的微博 (RSS)
可持续能源中的太阳能、风能发电取得了巨大进展。
Sustainable energy generation from sun & wind is making great progress
💭群组📮投稿🏷#Musk
L'uomo più ricco del mondo Elon #Musk ha avuto un incontro di circa un'ora e mezza a Palazzo Chigi con la premier Giorgia #Meloni. Temi centrali la denatalità, le regole UE sul mercato e i rischi dell'intelligenza artificiale.
@UltimoraPolitics
🤝Are Trump and Musk friends again?🚀
After a protracted quarrel and mutual public attacks, relations between US President Donald Trump and tech billionaire Elon Musk seem to have thawed. During a trip to Asia, Trump surprised reporters with his conciliatory words about Musk:
🗣️"I like Elon, I've always liked him. Elon is a good guy."
The US president explained his past conflicts with the head of Tesla with an almost paternal understanding:
💬"He had a bad spell, he had a bad period. He had a bad moment," Trump said. "It was a stupid moment in his life, very stupid. I'm sure he'd tell you that. But I like Elon, and I suspect I always will."
It seems that Trump has decided to bury the hatchet. 🕊️ He also told reporters that after a brief meeting with Musk at the funeral ceremony for slain Republican activist Charlie Kirk, they "occasionally communicate a little."
💡 This reconciliation may be based not only on personal forgiveness, but also on political calculation, observers say: Musk is considered an influential voice among conservative voters, which could be useful to Trump in the 2026 congressional elections.
Whether they will get closer again is still unclear. 🤔
But Trump is clearly in no hurry to write off his former ally. 🇺🇸
#Trump#Musk
👂More on Trump's Ear ⚠️