Можно ли в 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
Пребываю в шоках от сюжетных поворотов "Облаков"... Наверно, разрыв Янь Се и Цзян Тина войдёт в топ стекляннейших поворотов – такое развитие в какой-то момент можно было предугадать, но хотелось гнать от себя эту мысль подальше. Хуай Шан беспощадна
❞ ... чувствуя себя немного застенчивым и сдержанным, он спросил: – Где твое кольцо?
– ...Кольцо здесь. – Янь Се услышал свой собственный голос, сказавший: – Я надену его на тебя.
Щелчок...
Ослепляющие наручники защëлкнулись на запястьях Цзян Тина, и железные цепи повисли в воздухе.
– ... – Цзян Тин казался немного сбитым с толку. Он подозрительно посмотрел, затем поднял голову и спросил: – Янь Се, что это?
Янь Се открыл рот, но не смог издать ни звука.
Хуай Шан. Разрывая облака. Глава 131. Дело 1009 о взрыве во время операции наркоотдела
Cr. Tumei
#China#novel#HuaiShang#PoYun
Как взять и нагнуть одной фразой весь общественный строй. Уровень иносказания полетел в космос:
Пролетариат старательно и отважно преодолевал сильное давление буржуазии, но прежде чем успешно вырваться из лап капиталистического правления, его перевернули, прижали к кровати и невнятным голосом сказали: – Что сверху, что снизу - не имеет значения, больно не будет...
Хуай Шан. Разрывая облака. Глава 87. Дело 118 об убийстве чёрным ядом
#China#novel#HuaiShang#PoYun
А я ещё жаловалась на своё начальство... Да у них на такие экзекуции фантазии не хватило бы!
Китайцы знают толк в угрозах и не останавливаются на банальном "ноги тебе переломаю":
Что касается офицеров угрозыска городского управления, то в их головах была пустота. Все еще пребывая в шоке, они услышали бормотание Ма Сяна: – Я думаю, когда мы вернемся, Янь-гэ задушит нас наручниками, расчленит наши тела и замурует в стенах городского управления...
Хуай Шан. Разрывая облака. Глава 23. Дело 502: Замороженный труп
#China#novel#HuaiShang#PoYun
Я сдалась и решила, что настало время вернуться к новелле Хуай Шан "Разрывая облака" (2017) и в этот раз дойти с героями до самого конца. Поскольку я ее начинала читать еще тогда, когда о полном переводе можно было только мечтать, сейчас придется начать с самого начала.
И тут же с первых глав стали накатывать волны ассоциаций. Прежде всего, начинает казаться, что дофига умные парни из следственных отделов первыми попадают под подозрение (даже своих собственных преданных подчиненных!), потому что у них под ногами горит земля, а за каждым поворотом поджидают трупы. Чем-то напомнило вайбы Се Линя из "Опасных личностей" (2021) Мугуа Хуан...
Вань Чжэньго фыркнул: – Куда бы ты не пошел – умирают люди. Ты даже умудрился наткнуться на замерзший в морозильной камере труп после того, как приехал в заведение спеть в караоке. Ты уверен, что убийца не ты? Признайся уже, чтобы наши товарищи смогли поскорее закончить с делом и разойтись по домам.
Янь Се дал ему подзатыльник и смеясь сказал: – С навыками твоего Янь-гэ, думаешь я бы дал вам шанс узнать, что это был я? – сказав это, он достал сигарету и вышел.
Хуай Шан. Разрывая облака. Глава 2. Дело 502: Замороженный труп
#China#novel#HuaiShang#PoYun
Работа над новеллой "Сквозь облака" Хуай Шан идет полным ходом. Бренд-менеджер Комильфо показала фрагмент обложки первого тома от neesawahh
Ожидаем в первом квартале 2024 г., если ничего не поменялось со времен анонса лицензии
#China#novel#HuaiShang#PoYun
Раз сегодня день рождение Хуай Шан, то я воспользуюсь случаем и наконец-то покажу фото второго тома "Небесного омута" (он "Водоворот небес", он же "Плыть против течения небес", он же 洄天).
Эта новелла ждёт своего часа. До неё я с большой вероятностью подхвачу "Отблеск на клинке" (спин-офф "Облаков"), тем более перевод почти завершён. А там и до "Моря" рукой подать... Короче, нам с этой дамой предстоит ещё долгий путь, полный приключений и стекла!
#China#novel#HuaiShang#HuiTian
Тут недавно показали обложку второго тома печатного издания новеллы Хуай Шан "Водоворот небес" (2023, 119ch+3ex) от издательства 墨狸 (здесь я показывала, как выглядит первый).
И это хороший повод, чтобы напомнить, что недавно был завершен англоязычный перевод этой новеллы на сайте 98novels. В переводе на русский уже можно прочитать 61 главу (shyshyxuehua).
#China#novel#HuaiShang#HuiTian
Наконец-то получила первый том новеллы Хуай Шан "Водоворот небес" (洄天). Восторгу нет предела, как и количеству мерча. Пусть на обложке и отсутствуют фигуры главных героев, но короб это с лихвой компенсирует. Внутри издания также присутствуют цветные и черно-белые иллюстрации (покажу в комментариях). В общем, работа очень качественная и при этом не бьёт по карману. Нам есть к чему стремиться
Кстати, уже можно прочитать 52 главы в русском переводе и 71 на английском. Всего 119 основных глав и 3 экстры
#China#novel#HuaiShang#HuiTian
Какой внезапный синхрон! Только мы с подругой решили перечитать маньхуа "Сквозь облака", как "Комильфо" показали фрагмент обложки второго тома от neesawahh. Как же хорошо я помню этот момент...
#China#novel#HuaiShang#PoYun#анонсы
Вебинару Алины Перловой для CWS на тему "Пампушки или маньтоу? Как переводить китайские реалии" и моему отчаянному и выстраданному решению продолжить учить китайский несмотря на вал работы посвящается...
Фрейм из маньхуа "Сквозь облака" Хуай Шан
#China#manhua#HuaiShang#PoYun
Достаточно одного скрина, чтобы объяснить, почему я не смогла бы подружиться с Янь Се: "Джо не делится едой!"
Фрейм из маньхуа "Сквозь облака" Хуай Шан
#China#manhua#HuaiShang#PoYun
Еще раз рассказываю о новелле
Название: Сквозь облака (также переводят "Разрывая облака") / Breaking Through the Clouds / 破云
Автор: Хуай Шан / Huai Shang / 淮上
Жанр: детектив, драма, экшн
Год выпуска: 2017
Количество глав: 155ch+6ex
Описание: По небу над городом мчались причудливые облака.
Три года назад из-за ошибочных действий командира Цзян Тина во время операции по борьбе с наркотиками в Гунчжоу произошла цепочка взрывов, в результате чего наркоотдел понес тяжелые потери. Три года спустя Цзян Тин, который должен был пасть смертью храбрых в ходе операции и от кого не должно было остаться и косточки, чудесным образом вышел из комы.
Его героическая душа не смогла обрести покой, и, вернувшись из глубин ада в мир живых, он собрался отдать всё, что у него есть, лишь бы вывести на свет кровавую и непостижимую правду.
Полный русский перевод
Другие работы автора
Маньхуа (онгоинг)
#China#novel#HuaiShang#PoYun#список