Можно ли в 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
⚡️TapSwap Community: Upcoming Exciting Developments
#TapSwap#Web3Gaming
The TapSwap Community announces upcoming major platform updates, new gameplay reveals, and a fresh phase for $TAPS. These developments are expected in the coming weeks.
Source: link
@tonlines
🔋Amazing to see our founder connecting with industry legends and innovators at the Real Games, Real Rewards event!
⭐️Excited about the insights and collaborations that will power the future of gaming and Web3.
🤝Big thanks to @gate_ventures, @Metadomo, and @Moxyio for making this event possible!
#CyberCharge#Web3Gaming
Like👍, Retweet🔵, Comment
Link to the Tweet!
🔗Tweet From Our Co-Founder: Read
Open Metaverse Podcast Features Catizen Co-Founder
#gaming#web3gaming
Catizen Announcement introduces a new episode of the Open Metaverse Podcast featuring Ricky Wong, co-founder and CFO of Catizen. The discussion covers his transition from auditor to Web3 entrepreneur and insights into building a gaming ecosystem.
Source: link
@tonlines
⚡️Catizen Announcement: Strategic Partnership with Animoca Brands
#TON#Web3Gaming#Catizen
Catizen Announcement reveals a strategic partnership with Animoca Brands, enhancing their position as a leading Telegram Mini App game on TON. With a user base of over 40 million and 30 million CATI tokens utilized, Catizen is dedicated to developing a robust Web3 ecosystem around gaming, tokens, and Mini Apps.
Source: link
@tonlines
🎮 Exciting News! Dive into the world of NotCoin, the biggest Web3 game! 🌐🚀 Unleash your gaming prowess, explore virtual realms, and earn real rewards. 💰🕹 Join the revolution now!
👉 Explore the limitless possibilities: https://t.me/notcoin_bot?start=r_577856_2232895🎮🌟#NotCoin#Web3Gaming
🎮 Exciting News! Dive into the world of NotCoin, the biggest Web3 game! 🌐🚀 Unleash your gaming prowess, explore virtual realms, and earn real rewards. 💰🕹 Join the revolution now!
👉 Explore the limitless possibilities: https://t.me/notcoin_bot?start=r_577856_2232895🎮🌟#NotCoin#Web3Gaming
🎮 Exciting News! Dive into the world of NotCoin, the biggest Web3 game! 🌐🚀 Unleash your gaming prowess, explore virtual realms, and earn real rewards. 💰🕹 Join the revolution now!
👉 Explore the limitless possibilities: https://t.me/notcoin_bot?start=r_577856_2232895🎮🌟#NotCoin#Web3Gaming
TapSwap Community: Share Your Ideas for the Beta
#TapSwapBeta#Web3Gaming
TapSwap is inviting community members to contribute ideas for their beta version. Participants can suggest game ideas, features to test, or provide feedback on existing elements. Successful ideas may be implemented in the final release.
Source: link
@tonlines
🤝UXLINK x @TOKYOBEAST_JP: 日本コミュニティパートナーシップ発表! 🇯🇵
UXLINKは、TOKYOBEASTと日本コミュニティパートナーシップを締結しました! 🎉
TOKYOBEASTは、ゲーム・クリプト・予想を融合させた革新的なWeb3エンターテインメントプロジェクトです。
💰 2,000万ドルの開発予算 & 業界のプロ80名が手掛けるこのプロジェクトは、数百万のWeb2ユーザーをWeb3へとスムーズに導きます。
このパートナーシップを通じて、UXLINKは日本のWeb3コミュニティの成長と発展を支援し、より多くのユーザーにこの革新的な体験を届けます!
一緒にWeb3の未来を創りましょう!
🤝UXLINK x @TOKYOBEAST_EN: Japan Community Partnership Announcement! 🇯🇵
We’re excited to announce our Japan Community Partnership with TOKYOBEAST, a cutting-edge Web3 entertainment ecosystem that fuses gaming, crypto, and prediction like never before!
With a $20M development budget and a team of 80 industry experts, TOKYOBEAST is set to attract millions of Web2 users and seamlessly transition them into Web3.
Through this partnership, UXLINK will help grow and engage the Japanese Web3 community, connecting users to this revolutionary gaming experience.
Stay tuned for more updates as we expand the Web3 community together! #UXLINK#TOKYOBEAST#Web3Gaming
🚀 Big Announcement - Snapshot Completed!
🎉 The snapshot for the Tycoon Airdrop was successfully completed at 14:00 UTC, Nov 17!
The qualified participants list is ready, based on the previously announced criteria.
📖 Review the details:
1️⃣ Tycoon Point calculation & mandatory conditions: https://t.me/singsingchannel/965
2️⃣ Eligibility criteria & conversion rate: https://t.me/singsingchannel/996
✨On Nov 18, we will reveal the qualified list along with the corresponding $SING amount you’ve earned⏰Specific claim time will be announced tomorrow (Nov 18). Stay tuned!
#SingSingAirdrop#Web3Gaming
https://x.com/d3vxr/status/2040642828703772992?s=46. Live demo of D3VXR beta:
DXR → gameplay → DXR rewards
End-to-end utility, working in real time.
No speculation — just execution.
Watch here 👇
d3vxr.app
⚡#D3VXR#GameFi#Web3Gaming
🚨 Big news!
🎮$SING is now integrated into our partner game - Chickizen!
From now on, you can enjoy Chickizen with even more options and flexibility. 🐥✨
💳 Payment just got easier, smoother, and more rewarding!
Dive in, play, and explore Chickizen like never before!
Easily buy $SING at:
- BingX: https://bingx.com/en/spot/SINGUSDT/
- CoinEx: https://www.coinex.com/en/exchange/sing-usdt
- SingSing Mini App: https://t.me/SingSing_TG_bot/app?startapp=_wallet
- OKX Wallet: Guideline (https://t.me/singsingchannel/1088)
Play Chickizen with $SING: https://t.me/chickizenbot/app
#SingSing#Chickizen#Web3Gaming