Можно ли в 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
☣️Título: Overlord — ( Season 03 )
✔️Capitulos: 13
✔️Calidad: #720p
✔️Género: #Acción#Aventura#Fantasía#Magia#Isekai#Drama
✔️Idioma: #Japonés_Sub_Español
🀄️Sinopsis:
Tercera temporada del anime "Overlord".
La historia da comienzo cuando Yggdrasil, un popular juego online, es cerrado un día sin previo aviso. Sin embargo, el protagonista, Momonga, decide no salir del juego. Momonga así se transforma y se convierte en “el mago más poderoso”. El mundo sigue cambiando con él dentro, y los NPCs comienzan a sentir emociones. Sin familia, amigos ni lugar en la sociedad, Momonga tendrá que luchar por adaptarse al nuevo mundo en el que se ha convertido el juego.
⚠️Versión Doblaje Español Latino
> https://t.me/Animes480pFinalizados/23512
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: Overlord — ( Season 02 )
✔️Capitulos: 13
✔️Calidad: #720p
✔️Género: #Acción#Aventura#Fantasía#Magia#Isekai#Drama
✔️Idioma: #Japonés_Sub_Español
🀄️Sinopsis:
Segunda temporada del anime "Overlord".
La historia da comienzo cuando Yggdrasil, un popular juego online, es cerrado un día sin previo aviso. Sin embargo, el protagonista, Momonga, decide no salir del juego. Momonga así se transforma y se convierte en “el mago más poderoso”. El mundo sigue cambiando con él dentro, y los NPCs comienzan a sentir emociones. Sin familia, amigos ni lugar en la sociedad, Momonga tendrá que luchar por adaptarse al nuevo mundo en el que se ha convertido el juego.
⚠️Versión Doblaje Español Latino
> https://t.me/Animes480pFinalizados/23495
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: Overlord — ( Season 01 )
✔️Capitulos: 13
✔️Calidad: #720p
✔️Género: #Acción#Aventura#Fantasía#Magia#Isekai#Drama
✔️Idioma: #Japonés_Sub_Español
🀄️Sinopsis:
La historia da comienzo cuando Yggdrasil, un popular juego online, es cerrado un día sin previo aviso. Sin embargo, el protagonista, Momonga, decide no salir del juego. Momonga así se transforma y se convierte en “el mago más poderoso”. El mundo sigue cambiando con él dentro, y los NPCs comienzan a sentir emociones. Sin familia, amigos ni lugar en la sociedad, Momonga tendrá que luchar por adaptarse al nuevo mundo en el que se ha convertido el juego.
⚠️Versión Doblaje Español Latino
> https://t.me/Animes480pFinalizados/23478
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: Overlord — ( Season 03 )
✔️Capitulos: 13
✔️Calidad: #720p
✔️Género: #Acción#Aventura#Fantasía#Magia#Isekai#Drama
✔️Idioma: #Español_Latino🇲🇽
🀄️Sinopsis:
Tercera temporada del anime "Overlord".
La historia da comienzo cuando Yggdrasil, un popular juego online, es cerrado un día sin previo aviso. Sin embargo, el protagonista, Momonga, decide no salir del juego. Momonga así se transforma y se convierte en “el mago más poderoso”. El mundo sigue cambiando con él dentro, y los NPCs comienzan a sentir emociones. Sin familia, amigos ni lugar en la sociedad, Momonga tendrá que luchar por adaptarse al nuevo mundo en el que se ha convertido el juego.
⚠️Versión Subtitulada
>https://t.me/Animes480pFinalizados/23459
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: Overlord — ( Season 02 )
✔️Capitulos: 13
✔️Calidad: #720p
✔️Género: #Acción#Aventura#Fantasía#Magia#Isekai#Drama
✔️Idioma: #Español_Latino🇲🇽
🀄️Sinopsis:
Segunda temporada del anime "Overlord".
La historia da comienzo cuando Yggdrasil, un popular juego online, es cerrado un día sin previo aviso. Sin embargo, el protagonista, Momonga, decide no salir del juego. Momonga así se transforma y se convierte en “el mago más poderoso”. El mundo sigue cambiando con él dentro, y los NPCs comienzan a sentir emociones. Sin familia, amigos ni lugar en la sociedad, Momonga tendrá que luchar por adaptarse al nuevo mundo en el que se ha convertido el juego.
⚠️Versión Subtitulada
> https://t.me/Animes480pFinalizados/23442
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: Overlord — ( Season 01 )
✔️Capitulos: 13
✔️Calidad: #720p
✔️Género: #Acción#Aventura#Fantasía#Magia#Isekai#Drama
✔️Idioma: #Español_Latino🇲🇽
🀄️Sinopsis:
La historia da comienzo cuando Yggdrasil, un popular juego online, es cerrado un día sin previo aviso. Sin embargo, el protagonista, Momonga, decide no salir del juego. Momonga así se transforma y se convierte en “el mago más poderoso”. El mundo sigue cambiando con él dentro, y los NPCs comienzan a sentir emociones. Sin familia, amigos ni lugar en la sociedad, Momonga tendrá que luchar por adaptarse al nuevo mundo en el que se ha convertido el juego.
⚠️Versión Subtitulada
> https://t.me/Animes480pFinalizados/23425
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: Shijou Saikyou No Daimaou, Murabito A Ni Tensei Suru — ( The Greatest Demon Lord Is Reborn As A Typical Nobody )
✔️Capitulos: 12
✔️Calidad: #720p
✔️Género: #Acción#Fantasía#Escolar#Harem#Magia
✔️Idioma: #Japonés_Sub_Español
🀄️Sinopsis:
En su anterior vida, fue conocido como el Lord Demonio Varvatos, un poderosísimo usuario de magia. Pero se sentía solo después de perder a sus amigos y seres queridos durante su ascenso al poder, por lo que, en sus últimos momentos, Varvatos lanzó un hechizo para reencarnarse y tener una segunda oportunidad para ser un chico normal. Al principio, parece que funciona: renace miles de años después como aldeano. Desafortunadamente para él, sus recuerdos aún están intactos y no es consciente de cuánto se ha perdido durante el tiempo que ha pasado hasta volver a nacer, y parece que eso le va a costar su vida normal.
📤Apoyame Aquí 👈
@Animes480pFinalizados
☣️Título: The Fruit Of Evolution: Before I Knew It, My Life Had It Made — ( Shinka No Mi: Shiranai Uchi Ni Kachigumi Jinsei )
✔️Capitulos: 12
✔️Calidad: #720p
✔️Género: #Aventura#Romance#Ecchi#Harem#Fantasía#Comedia#Isekai#Magia
✔️Idioma: #Español_Latino🇲🇽
🀄️Sinopsis:
Seiichi Hiiragi es un joven desafortunado que es despreciado por sus compañeros porque lo consideran hogareño, regordete y maloliente. La suerte de Seiichi va de mal en peor cuando su clase es transportada a otro mundo, pero se encuentra solo en el desierto y perseguido por una gorila amorosa llamada Saria. Las desastrosas vidas de la improbable pareja toman un giro positivo después de ingerir el legendario "fruto de la evolución", y se produce una transformación inesperada...
⚠️Versión Subtitulada
>https://t.me/Animes480pFinalizados/22080
📤Apoyame Aquí 👈
@Animes480pFinalizados