Можно ли в 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
#SC/USDT analysis :
#SC is currently experiencing a bearish trend, making new lows. The price is rejecting from the 200 EMA resistance, indicating a potential continuation of the downtrend. The price is expected to decline further, testing the swing low level.
TF : 1H
Entry : $0.003495
Target : $0.003225
SL : $0.003636
The Freely Eagle...
Oops Conditons Applied.
what's life ?
Happines today in journey, there might be a Sad turn tomorrow.
Slipped if on that turn, just stand smile and move ahead.
That's what a life for me.
Oblivious about what's gonna happen fews day ahead, was enjoying his journey of life fully.
Like a free fierce Eagle at high above the Limit less sky.
Boards were going on, and he was blindfolded by the next twist waiting for him.
Someone was waiting to gain his love, in the mid of his boards.
who..? Some call her/him Danger, Dead end, life threatening, etc. But the Common name was
Cancer. Yes!!!
Was unknown about it and flying high in his journery of life. That turn came, was encountered too.
The moment he got to know. His wings were cut, and the Eagle was Caged.
All the dreams, aims, were shattered.
Like all his hopes were slaughtered.
Was Broken, hurted, and lost all the hopes.
Bacause, he was still and Fierce Eagle; but wiith conditions applied,
Who used to jump and Run, was now caged where he can just walk.
Who dreamt of many things, but was caged because he wasn't able to do of his wish,
But still, he dealed with it. Accepted the long life inprisonment of conditions applied.
If not the aims and dreams hi choosed, then
He went by making new dreams of he can.
If not sports and physical activities anymore
He went with Pen as his Passion.
Not the Happiness he used to dream of
But by happiness of bringing best of his words.
Yeah, it's my life like a caged bird now,
But if are caged by conditions or sort of same. It isn't mean you can't fly anymore.
Have faith and believe in you, and just have a take off with the cage of conditions with you above the Sky.
#sc
#review
#shortstory
@the_critpic_hunter
#SC/USDT analysis :
#Siacoin has broken out above the previous high with robust momentum and formed a higher high. The price is anticipated to sustain its bullish momentum and challenge new highs. Seek a pullback near the support zone to consider a long entry.
TF : 1H
Entry : $0.00465
Target : $0.00489
SL : $0.00451
#没用的外站信息
可能会被群友说是没用的外站信息,就合并到一起发了。
————
#SC#SecretCinema#站点公告
We have a new IRC channel that we actually control.
Server: irc.brokensphere.net:6697
Channel: #secretcinema
Use site nick especially if you require assistance.
Please don't use the #sc channel for assistance or help with your account as staff will no longer idle in this chat.
TLDR; SC 更换了 IRC 的域名。
————
#shazbat#站点公告
2024-02-25 - Webchat broken
As you might have noticed, the webchat is a bit broken. We are working on fixing it, but it might take some time.
If you want a good chat experience, join IRC (see the help pages).
TLDR; webchat 炸了,要聊天就来 IRC。
————
#ABN#站点免费
站免还剩 8 天+
————
#HeBits#站点免费
站免还剩 1 天+
————
#AcidLounge#站点公告
Hey all,
We had over 10 accounts that someone took advantage of maybe from stolen database from another site. These peeps have now lost there account.
So please don't use the same password as other sites maybe consider using Two Factor Authentication (2FA) which can be setup in your settings.
You can use an app like Authy
https://authy.com/what-is-2fa/
TLDR; 有人号被盗了,记得开 2FA。